2012-03-28 11 views
2

Ich versuche einzugrenzen, warum meine JComponent nicht neu gezeichnet wird. Es ist seltsam, dass ich Redraw zum Arbeiten mit Maus drücken und loslassen kann, aber nicht beim Ziehen. Gibt es eine Möglichkeit, die EventQueue auszudrucken oder zu überprüfen, ob das PaintEvent ausgeführt oder gedumpt wurde? Lass es mich wissen, danke.Wie kann ich feststellen, ob meine JComponent Repaint-Aufrufe von der Software empfängt?

+1

Können Sie uns eine reduzierte Version Ihres Codes geben, die Ihr Problem provoziert? Idealerweise eine Version, die wir lokal kompilieren und ausführen können. – Irfy

+0

Sie haben wahrscheinlich einen Fehler in Ihrem Code. Ich stimme der obigen Empfehlung von irfy zu, um uns Ihren Code zu zeigen. Ich habe println aus der paintComponent-Methode heraus ausgeführt, was manchmal helfen kann, aber hoffentlich hast du keine Programmlogik in deiner paint- oder paintComponent-Methode, und daher denke ich, dass du besser die anderen Methoden austesten kannst. –

+1

Sie können immer Ihre eigene EventQueue schieben, die die dispatchEvent Methode überschreibt und Syserr an die Konsole der Ereignisklasse, Quelle, etc ... weiterleitet. –

Antwort

1

Es gibt keine Möglichkeit, Aufträge auf der EventQueue auszudrucken, zumindest nicht, dass ich weiß.

Sind Sie sicher, dass Sie repaint() aufrufen? Bitte beachten Sie, dass der Aufruf von Repaint nicht dafür sorgt, dass Ihre Komponente sofort oder zeitnah neu gezeichnet wird.

Meine Vermutung ist, dass, wenn Sie Repaint aufrufen, das Problem sein kann, dass Sie nie den UIhread loslassen. Wenn Sie auf den GUI-Thread warten und nicht freigeben, wird Ihre GUI nie aktualisiert.