2012-03-29 15 views
1

Ich habe ein gebundenes JTextField und ein separates Diagramm aus einer JComponent. Wenn ich auf mein Diagramm ziehe, sollte ein Marker aktualisiert werden und das gebundene JTextField sollte seine Koordinaten anzeigen, während es gezogen wird. Wenn ich bin, wird das Diagramm nicht neu gezeichnet, bis ich fertig gezogen habe. Wenn ich die Bindung ausschalte, wird mein Diagramm neu gezeichnet, wenn ich es ziehe. Ich verstehe nicht, warum JGoodies meine Repaint-Anrufe blockiert, während ich ziehe. Weiß jemand, warum das passieren könnte?JGoodies Bindung lässt mich meine JComponent nicht neu streichen

Mein Code sieht so aus:

public void dragMarker() 
{ 
    ...some code... 
    firePropertyChange("propertyName", oldValue, newValue); 
    myJComponent.refresh(); 
} 

Etwas in JGoodies los, dass ich nicht herausfinden kann. Nach Abschluss des Bindungsaufrufs sollte es neu gezeichnet werden.

Auch ich habe gerade gelesen, dass Swing mehrere Aufrufe zusammenfalten kann, um in einem Anruf neu zu streichen. Könnte mir das passieren? Meine Repaint-Anrufe werden am Ende zu einem einzigen Anruf zusammengelegt?

Antwort

0

Meine Antwort, die ich nicht perfekt finde, ist, dass ich einen Swingworker-Thread mit einem geplanten Executor mit einer Geschwindigkeit von 0,3 Sekunden starte, der die firePropertyChangeListeners ausführt und den JGoodies-Code aktualisiert. Dies bedeutet, dass die Updates abgehackt sind, aber zumindest der Zeichnungscode ist fast perfekt glatt. Es macht mir Sorgen, dass dieses Problem auftritt. Das war das Beste, was ich tun konnte ...