TableCellRenderer, Performance

Status
Nicht offen für weitere Antworten.
S

sofa-surfer

Gast
Hallo,

eine Frage zum TableCellRenderer: Wie bekomme ich es hin, dass wenn ich eine eigene Implementierung des TableCellRenderer-Interfaces erzeuge, dann nicht die CPU ständig auf 100% läuft nur um meine JTable darzustelllen?
In den ganzen Tutorials die ich zu diesem Thema gelesen habe steht immer nur, dass genau das ein Problem ist, aber es steht nicht drin wie man es löst. Bzw das man es so machen soll, wie es im DefaultTableCellRenderer realisiert ist. Aber mal nen praktisches Beispiel dazu hab ich irgendwie noch nicht gefunden ....

Danke.
 

AlArenal

Top Contributor
Auf eine so allgemein Frage kann keine präzise ANtwort kommen. Wir können schließlich nciht wissen was du da in deinem Renderer treibst und daher auch nciht sehen wo bei dir der Bottleneck liegt.
 
R

Roar

Gast
AlArenal hat gesagt.:
Auf eine so allgemein Frage kann keine präzise ANtwort kommen. Wir können schließlich nciht wissen was du da in deinem Renderer treibst und daher auch nciht sehen wo bei dir der Bottleneck liegt.

wahrscheinlich typischer fehler wie in abschnitt 4 im oben genannten link beschrieben ;)
 
S

sofa-surfer

Gast
Danke.

Wieso kann sowas nicht auch einfach in Tutorials stehen? ???:L
 
R

Roar

Gast
tja, sowas steht halt nur in guten tutorials, wie in unserem :-D
 
S

sofa-surfer

Gast
es kann nur besser werden...

hab meinen ganzen krams jetzt nicht hier kann und kann also kein feedback geben.
 
S

sofa-surfer

Gast
ich noch mal und diesmal mit code :wink:
ich habs jetzt denk ich mal so, wie es hier im Tutorial beschrieben war. aber nach wie vor das selbe problem: 100% CPU-Auslastung nur vom Darstellen. Sobald die Tabelle weg ist --> kein Problem

Die Klasse, die die Tabelle darstellt:
Code:
private JTable table;
private TreeTableCellRenderer ttcr;
private LayoutTableCellRenderer ltcr;
public AbstractClassifier classifier;

public ClassifierGUI(String label)
{
    ttcr = new TreeTableCellRenderer();
    ltcr = new LayoutTableCellRenderer();

    customizeTable();
}

Die Methode zum Tabelle konfigurieren:
Code:
private void customizeTable()
{
    table = new JTable(0, 5);
    table.setDefaultRenderer(Object.class, ltcr);
    table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
    table.setBackground(this.getBackground());
    table.setEnabled(true);
    table.setShowGrid(false);
}

Die Methode, die die Tabelle zu Laufzeit aktualisiert:
Code:
public void rebuildPanel()
{
    // create new table
    customizeTable();

    // macht erst mal diverse Sachen, die aber nicht von Interesse sind

    // generate columns
    DefaultTableColumnModel cm = new DefaultTableColumnModel();
    TableColumn col;

    col  = new TableColumn(0,name_width+20);
    col.setCellRenderer(ttcr);
    col.setResizable(true);
    cm.addColumn(col);
    col  = new TableColumn(1,size_width+20);
    col.setResizable(true);
    cm.addColumn(col);
    for (int j = 2; j<5; j++)
    {
        col  = new TableColumn(j,100);
        cm.addColumn(col);
     }
     table.setColumnModel(cm);
}

Und dann noch die beiden Renderer:
Code:
public class TreeTableCellRenderer extends JTree implements TableCellRenderer
{
    public Component getTableCellRendererComponent
        (JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
    {
        if (value != null)
        {
            if (column == 0)
            {
                 table.setRowHeight(row, this.getPreferredSize().height);
                  // und ebend alles was noch gemacht werden soll
                 return this;
            }
        }
        return null;
    }
}


public class LayoutTableCellRenderer extends JPanel implements TableCellRenderer
{
    public Component getTableCellRendererComponent
        (JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
    {
        if (value != null)
        {
            this.setLayout(new BorderLayout());
            JLabel content = new JLabel((String) value.toString());

            if (column == 1)
            {
                JPanel temp = new JPanel(new BorderLayout());
                temp.add(content, BorderLayout.EAST);
                this.add(temp, BorderLayout.NORTH);
            }

            this.add(content, BorderLayout.NORTH);
       }
        return this;
    }
}

Wo hängt es jetzt?
 
S

sofa-surfer

Gast
ok, ich ha jetzt den Grund gefunden:
Zeile 11 im TreeTableCellRenderer ist das Problem

Code:
table.setRowHeight(row, this.getPreferredSize().height);

Woran liegt das, bzw wie kann ich das gewünschte Ergebnis erreichen ohne meinen Rechner zu strapazieren?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B TableCellRenderer rendert Integer/Boolean Felder nicht AWT, Swing, JavaFX & SWT 4
M Swing TableCellRenderer elegant anpassen AWT, Swing, JavaFX & SWT 3
D Swing Mit TableCellRenderer einzelne Zellen markieren AWT, Swing, JavaFX & SWT 3
O Swing TableCellRenderer und JComboBox AWT, Swing, JavaFX & SWT 4
C Swing TableCellRenderer: setText() vs. setIcon() AWT, Swing, JavaFX & SWT 5
E Swing TableCellRenderer für alle Splaten setzen?! AWT, Swing, JavaFX & SWT 3
M gleicher TableCellRenderer für mehrere unterschiedliche Tabellen AWT, Swing, JavaFX & SWT 5
A Swing TableCellRenderer ändert die Zeilenfarbe zu spät AWT, Swing, JavaFX & SWT 3
J Swing JTable, eigener TableCellRenderer Keine Anzeige in den Zellen AWT, Swing, JavaFX & SWT 8
J NullPointerException bei Benutzung vom TableCellRenderer AWT, Swing, JavaFX & SWT 3
U TableCellRenderer: Problem mit Timestamp/Date AWT, Swing, JavaFX & SWT 2
U TableCellRenderer UND prepareRenderer AWT, Swing, JavaFX & SWT 12
C Swing TableCellRenderer AWT, Swing, JavaFX & SWT 10
U TableCellRenderer und setBackground AWT, Swing, JavaFX & SWT 20
H Swing TableCellRenderer für verschiedene Spalten AWT, Swing, JavaFX & SWT 11
C Swing Problem mit TableCellRenderer in Verbindung mit TableRowSorter AWT, Swing, JavaFX & SWT 2
R JTable - TableCellRenderer AWT, Swing, JavaFX & SWT 3
R JTable - TableCellRenderer - BufferedImage AWT, Swing, JavaFX & SWT 9
S TableCellRenderer: JLabel-Background in JPanel AWT, Swing, JavaFX & SWT 7
R JTable mit TableCellRenderer AWT, Swing, JavaFX & SWT 10
R JTable - TableCellRenderer AWT, Swing, JavaFX & SWT 2
D TableCellRenderer rendert einfach nicht! AWT, Swing, JavaFX & SWT 4
S TableCellRenderer setForeground AWT, Swing, JavaFX & SWT 5
I Problem mit TableCellRenderer AWT, Swing, JavaFX & SWT 3
K TableCellRenderer Problem AWT, Swing, JavaFX & SWT 3
F TableCellRenderer wie umsetzen? AWT, Swing, JavaFX & SWT 2
D JTable TableCellRenderer AWT, Swing, JavaFX & SWT 2
J JTable und TableCellRenderer AWT, Swing, JavaFX & SWT 2
G TableCellRenderer Background variiert darstellen AWT, Swing, JavaFX & SWT 3
P TableCellRenderer mit einem TableRowSorter AWT, Swing, JavaFX & SWT 4
D TableCellRenderer PRoblem AWT, Swing, JavaFX & SWT 3
G TableCellRenderer soll ganze ausgewählte Zeile markieren AWT, Swing, JavaFX & SWT 2
S TableCellRenderer deaktivieren AWT, Swing, JavaFX & SWT 13
J TableCellRenderer AWT, Swing, JavaFX & SWT 5
S JTree mal anders (TableCellRenderer) AWT, Swing, JavaFX & SWT 6
M Objekt in TableCellRenderer packen, warum ein Fehler? AWT, Swing, JavaFX & SWT 2
T TableCellRenderer Problem AWT, Swing, JavaFX & SWT 6
B TableCellRenderer + JComboBoxen AWT, Swing, JavaFX & SWT 2
H Viele ActionListener (MouseListener) - Performance AWT, Swing, JavaFX & SWT 24
missy72 JavaFX Performance / ImageView in TableView über TimeLine AWT, Swing, JavaFX & SWT 1
L JavaFX ListCell Performance AWT, Swing, JavaFX & SWT 10
E Swing Miserable Performance beim Ändern der Hintergrundfarbe von JLabels AWT, Swing, JavaFX & SWT 3
W Swing Performance bei Griderstellung verbessern AWT, Swing, JavaFX & SWT 15
C Pixel-Rendering/Animation Performance in BufferedImage AWT, Swing, JavaFX & SWT 1
I JavaFX Graphics Performance AWT, Swing, JavaFX & SWT 2
S Swing Performance bei Verschachtelung problematisch AWT, Swing, JavaFX & SWT 0
R Performance Drag and Drop & Timer AWT, Swing, JavaFX & SWT 3
O AWT Performance und Bug behebung[brauche Hilfe] AWT, Swing, JavaFX & SWT 2
T Swing Allgemeines Problem mit der Performance bei DragAndDrop AWT, Swing, JavaFX & SWT 2
T Prüfen ob 2 JLabel übereinander liegen. Performance Problem. AWT, Swing, JavaFX & SWT 5
S Swing Lauftext Performance Probleme, in größerer Anwendung AWT, Swing, JavaFX & SWT 6
B Performance-Probleme AWT, Swing, JavaFX & SWT 17
D DefaultTableCellRenderer - Performance AWT, Swing, JavaFX & SWT 3
hdi Swing [Umfrage] Swing Performance AWT, Swing, JavaFX & SWT 27
B 2D-Grafik BufferedImage Performance AWT, Swing, JavaFX & SWT 3
C Performance-Problem beim Überschreiben von paintComponent() AWT, Swing, JavaFX & SWT 2
Hausmeister JTable mit Bildern - Performance AWT, Swing, JavaFX & SWT 5
J JTree Performance AWT, Swing, JavaFX & SWT 2
Developer_X Swing Graphics2D translate zerstört performance AWT, Swing, JavaFX & SWT 2
hdi Swing JTable: Mein CellRenderer ist ein Performance-Killer? AWT, Swing, JavaFX & SWT 7
J Performance bei mouseMoved(...) AWT, Swing, JavaFX & SWT 4
L JFreeChart - Performance bei PNG-Erstellung AWT, Swing, JavaFX & SWT 5
P seltsame Performance Probleme bei 2 Guis abhängig vom Aufruf AWT, Swing, JavaFX & SWT 8
G Performance beim Zeichnen erhöhen? AWT, Swing, JavaFX & SWT 21
hdi bitte um performance ratschläge AWT, Swing, JavaFX & SWT 31
G performance fragen zu AWT, Swing AWT, Swing, JavaFX & SWT 14
T (Java 6) Thumbnails in JFileChooser - Performance steigern? AWT, Swing, JavaFX & SWT 3
hdi schlechte performance bei simplem swing AWT, Swing, JavaFX & SWT 9
G Probleme mit Performance bei einer Tabelle AWT, Swing, JavaFX & SWT 16
M Performance SWT ??? AWT, Swing, JavaFX & SWT 8
D performance problem: paintcomponent, alphacomp, bufferedImag AWT, Swing, JavaFX & SWT 10
P SWT: StyledText Performance steigern? AWT, Swing, JavaFX & SWT 2
T Performance Problem bei BufferedImage AWT, Swing, JavaFX & SWT 3
P SWT Performance : "Text" - Ausgabe beschleunigen ? AWT, Swing, JavaFX & SWT 21
O performance g2d.drawImage() AWT, Swing, JavaFX & SWT 17
D Performance Probleme Jtable AWT, Swing, JavaFX & SWT 4
N Performance (BufferStrategy?) AWT, Swing, JavaFX & SWT 2
F Problem mit Transparenz, MouseEvents und Performance AWT, Swing, JavaFX & SWT 3
O LookAndFeel und Performance AWT, Swing, JavaFX & SWT 7
W Performance verbessern AWT, Swing, JavaFX & SWT 2
S Performance-Problem: JTextArea als Logging-Window AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben