Dienstag, 28. Oktober 2008

JTable Performance

Mich hat schon eine Zeit lang gewundert, warum Programme, die ich geschrieben habe und eine JTable benutzen, so viel CPU brauchen. Naja, inzwischen hab ich mal ein wenig rumgefrickelt und rausgefunden, dass diese Tabelle unter gewissen Umständen öfters geupdated wird, als das menschliche Auge überhaupt mitbekommt (> 50Hz).

Also hab ich einen kleinen Hack eingeführt, der wie folgt aussieht:


public class MyJTable extends JTable {

...
private long lastCall = System.currentTimeMillis();

public MyJTable () {
super();

new Thread() {
public void run() {
while(true) {
MyJTable.this.repaint();
try {Thread.sleep(20);}catch (Exception e) {}
}
}
}.start();
}

@Override
public void repaint () {
long curr = System.currentTimeMillis();
if (curr - LASTCALL > 20) {
super.repaint();
LASTCALL = curr;
}
}

Keine Kommentare: