Hi zusammen,
nachdem ich nun das Geschwindigkeitsproblem mit meiner Tabelle dank euch lösen konnte nun noch eine Frage:
Meine Tabelle (in einer JScrollPane) besitzt Zeilen, in denen die Zellen einfach eine Hintergrundfarbe gesetzt bekommen.
-> Passiert in der Methode des CellRenderers (extends JPanel implements TableCellRenderer):
Und es gibt Zeilen in denen sich Scala befindet (ausschnitte aus einem zuvor gezeichnetem Bufferedimage)
--> Passiert in der Methode des CellRenderers:
--------------------------------------------------------------------------------------------
Wenn ich über die Tabelle scrolle, dann werden die Zellen, welche die Hintergrundfarben gesetzt bekommen immer korrekt dargestellt.
Die Scala ist auch "meistens" da.
Wenn ich aber den Scrollbalken an eine andere Stelle ziehe, dann fehlen alle Scala Zeilen (also die sind einfach schwarz)
--------------------------------------------------------------------------------------------
Wenn ich das jetzt richtig verstehe:
Die Tabelle wird zu beginn einmal initialisiert und dann werden alle Zellen entsprechend befüllt. Also bei mir werden die Hintergrundfarben gesetzt.
Wann wird jetzt bei dem CellRenderer die PaintMethode aufgerufen? Wieso habe ich dann an machen Stellen zwar die Zellen mit den gesetzten Hintergrundfarben, aber die Scala, die in der paintComponent() Methode gezeichnet wird fehlt?
Ich hatte eine tolle Lösung :
Beim Scrollen habe ich einfach die Tabelle immer upgedatet, also alle Zellrenderer neu zeichnen lassen.
Siehe da -> die Scala ist immer da, so wie es sein soll, aber die Tabelle ist sehr sehr lahm.
nachdem ich nun das Geschwindigkeitsproblem mit meiner Tabelle dank euch lösen konnte nun noch eine Frage:
Meine Tabelle (in einer JScrollPane) besitzt Zeilen, in denen die Zellen einfach eine Hintergrundfarbe gesetzt bekommen.
-> Passiert in der Methode des CellRenderers (extends JPanel implements TableCellRenderer):
Code:
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int col) {
}
Und es gibt Zeilen in denen sich Scala befindet (ausschnitte aus einem zuvor gezeichnetem Bufferedimage)
--> Passiert in der Methode des CellRenderers:
Code:
public void paintComponent(Graphics g) {
}
--------------------------------------------------------------------------------------------
Wenn ich über die Tabelle scrolle, dann werden die Zellen, welche die Hintergrundfarben gesetzt bekommen immer korrekt dargestellt.
Die Scala ist auch "meistens" da.
Wenn ich aber den Scrollbalken an eine andere Stelle ziehe, dann fehlen alle Scala Zeilen (also die sind einfach schwarz)
--------------------------------------------------------------------------------------------
Wenn ich das jetzt richtig verstehe:
Die Tabelle wird zu beginn einmal initialisiert und dann werden alle Zellen entsprechend befüllt. Also bei mir werden die Hintergrundfarben gesetzt.
Wann wird jetzt bei dem CellRenderer die PaintMethode aufgerufen? Wieso habe ich dann an machen Stellen zwar die Zellen mit den gesetzten Hintergrundfarben, aber die Scala, die in der paintComponent() Methode gezeichnet wird fehlt?
Ich hatte eine tolle Lösung :
Beim Scrollen habe ich einfach die Tabelle immer upgedatet, also alle Zellrenderer neu zeichnen lassen.
Siehe da -> die Scala ist immer da, so wie es sein soll, aber die Tabelle ist sehr sehr lahm.