R
redbomber
Gast
Hi zusammen.
Ich habe eine Frage:
Meine JTable besitzt Zellen vom Typ JPanel.
Wenn ich eine Zelle anklicke, soll diese mit einem weissen X markiert werden, was auch funktioniert.
Solange meine Tabelle nur wenige Zellen besitzt geht das sehr schnell.
Bei aber vielleicht 60.000 Zellen klicke ich die Zelle an (diese wird auch gleich korrekt ausgewählt usw.) aber bis diese dann letztendlich markiert wird, vergehen bestimmt 5-10 Sekunden.
Nun frage ich mich woran das liegt. Irgendwas wird hier bestimmt unnötig ausgeführt, aber was?
Mein Renderer kümmert sich um das anpinseln der Zelle:
Wird denn diese paint Methode für alle Zellen in der Tabelle aufgerufen?
Oder wird diese für alle sichtbaren Zellen in der Tabelle aufgerufen?
Hat ihr mir vielleicht einen Tip wie ich herausfinde wo die ganze Zeit verloren geht?
Ich habe eine Frage:
Meine JTable besitzt Zellen vom Typ JPanel.
Wenn ich eine Zelle anklicke, soll diese mit einem weissen X markiert werden, was auch funktioniert.
Solange meine Tabelle nur wenige Zellen besitzt geht das sehr schnell.
Bei aber vielleicht 60.000 Zellen klicke ich die Zelle an (diese wird auch gleich korrekt ausgewählt usw.) aber bis diese dann letztendlich markiert wird, vergehen bestimmt 5-10 Sekunden.
Nun frage ich mich woran das liegt. Irgendwas wird hier bestimmt unnötig ausgeführt, aber was?
Mein Renderer kümmert sich um das anpinseln der Zelle:
Code:
public void paint(Graphics g) {
super.paint(g);
// paint cross onto selected cell
// selectedObj ist Objekt welches sich in der Zelle befindet -> nicht jede Zelle kann markiert werden //da nicht alle gefüllt sind, nur wenn sich auch mein Objekt in der Zelle befindet, kann diese auch ausgewählt werden
// Selector speichert eine Liste mit allen selektierten Zellen
if (selectedObj != null && Selector.contains(selectedObj)){
g.setColor(Color.WHITE);
g.drawLine(0, 0, getWidth(), getHeight());
g.drawLine(0, getHeight(), getWidth(), 0);
}
selectedProbe = null;
}
Wird denn diese paint Methode für alle Zellen in der Tabelle aufgerufen?
Oder wird diese für alle sichtbaren Zellen in der Tabelle aufgerufen?
Hat ihr mir vielleicht einen Tip wie ich herausfinde wo die ganze Zeit verloren geht?