Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.java > #12992

GUI-Update über Swing-EDT (was: JUnit Test von JButton: Action wird nicht erkannt)

From "Christian H. Kuhn" <qno-news@qno.de>
Newsgroups de.comp.lang.java
Subject GUI-Update über Swing-EDT (was: JUnit Test von JButton: Action wird nicht erkannt)
Date 2016-07-15 12:03 +0200
Message-ID <durqo5F8hcgU1@mid.individual.net> (permalink)
References <duo028Fb4qaU1@mid.individual.net> <nm8j8b$r9c$1@newsreader4.netcologne.de>

Show all headers | View raw


Topic adapted.

Am 14.07.2016 um 19:47 schrieb Patrick Roemer:
> Responding to Christian H. Kuhn:
> Das muss alles über den Swing-EDT laufen.

Ich habe ne Nacht drüber geschlafen. Und die Doku zu SwingUtilities
gelesen :-)

Um herauszufinden, was wie arbeitet, lasse ich das GUI-Modell als
autonomous view mal unangetastet. Ja, presentation model ist besser und
kommt auch noch. Ein Schritt nach dem anderen.

Aufrufe zur Änderung des GUI-Zustands aus den Tests können mit
SwingUtilities.invokeAndWait() auf den Swing-EDT gelegt werden.

QChessClock greift auf die GUI ausschließlich per notifyObservers() und
darin implementiert über die verschiedenen update() zu. QChessClock
weiss nichts über die Art seiner Oberfläche. Deshalb kommt ein Aufruf
von notifyObservers() (sowieso nicht, ist zu lang und zu komplex und
könnte den EDT blockieren) oder der einzelnen update() per
invokeAndWait() nicht infrage.

QChessClockJavaAVTest greift nur an einer Stelle anders als per
notifyObservers() direkt schreibend auf die GUI zu. Die Stelle ist auf
invokeAndWait() geändert. Alle anderen Schreibzugriffe erfolgen über
notifyObservers(). Die Testklasse darf wissen, dass das Testobjekt in
Swing realisiert ist; es wäre möglich, notifyObservers() (eher nicht,
s.o.) oder update() mit invokeAndWait() aufzurufen. Da das Problem aber
ohnehin in der GUI gelöst werden muss, s.o., brauche ich am Test nichts
zu ändern.

Ich merke, dass ich immer noch in der Vorstellung lebe, dass Objekte und
mit ihnen alle ihre Eigenschaften und Methoden in einem Thread leben.
Für Objekt und Felder mag das gelten, Methoden leben aber in dem Thread,
der sie aufruft. Das übersehe ich gerne. In QChessClockJavaAV betrifft
das die verschiedenen update()-Methoden. Die werden nicht unbedingt in
dem Thread ausgeführt, in dem die GUI angelegt wird. Und selbst wenn:
Sie verändern den GUI-Zustand und gehören daher in den Swing-EDT. Also
ändere ich alle update()-Methoden so, dass sie ihre Schreibzugriffe über
invokeAndWait() ausführen. v0.8.5

Die Zeitprobleme kommen extra.

lg
QNo

Back to de.comp.lang.java | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

JUnit Test von JButton: Action wird nicht erkannt "Christian H. Kuhn" <qno-news@qno.de> - 2016-07-14 01:09 +0200
  Re: JUnit Test von JButton: Action wird nicht erkannt "Christian H. Kuhn" <qno-news@qno.de> - 2016-07-14 18:26 +0200
  Re: JUnit Test von JButton: Action wird nicht erkannt Patrick Roemer <sangamon@netcologne.de> - 2016-07-14 19:47 +0200
    Re: JUnit Test von JButton: Action wird nicht erkannt "Christian H. Kuhn" <qno-news@qno.de> - 2016-07-15 00:08 +0200
      Re: JUnit Test von JButton: Action wird nicht erkannt Patrick Roemer <sangamon@netcologne.de> - 2016-07-15 22:04 +0200
        Re: JUnit Test von JButton: Action wird nicht erkannt "Christian H. Kuhn" <qno-news@qno.de> - 2016-07-15 22:53 +0200
        Re: JUnit Test von JButton: Action wird nicht erkannt "Christian H. Kuhn" <qno-news@qno.de> - 2016-07-15 23:09 +0200
          Re: JUnit Test von JButton: Action wird nicht erkannt Patrick Roemer <sangamon@netcologne.de> - 2016-07-15 23:44 +0200
            Countdown Timer Design (was: JUnit Test von JButton: Action wird nicht erkannt) "Christian H. Kuhn" <qno-news@qno.de> - 2016-07-16 23:44 +0200
              Re: Countdown Timer Design "Christian H. Kuhn" <qno-news@qno.de> - 2016-07-17 12:44 +0200
              Re: Countdown Timer Design "Christian H. Kuhn" <qno-news@qno.de> - 2016-07-17 15:49 +0200
                Re: Countdown Timer Design "Christian H. Kuhn" <qno-news@qno.de> - 2016-07-17 17:03 +0200
                Re: Countdown Timer Design "Christian H. Kuhn" <qno-news@qno.de> - 2016-07-19 15:59 +0200
        Re: JUnit Test von JButton: Action wird nicht erkannt "Christian H. Kuhn" <qno-news@qno.de> - 2016-07-19 14:59 +0200
          Re: JUnit Test von JButton: Action wird nicht erkannt "Christian H. Kuhn" <qno-news@qno.de> - 2016-07-19 16:06 +0200
          Re: JUnit Test von JButton: Action wird nicht erkannt Patrick Roemer <sangamon@netcologne.de> - 2016-07-19 18:59 +0200
            Re: JUnit Test von JButton: Action wird nicht erkannt "Christian H. Kuhn" <qno-news@qno.de> - 2016-07-19 22:35 +0200
              Re: JUnit Test von JButton: Action wird nicht erkannt Patrick Roemer <sangamon@netcologne.de> - 2016-07-20 13:00 +0200
                Re: JUnit Test von JButton: Action wird nicht erkannt "Christian H. Kuhn" <qno-news@qno.de> - 2016-07-23 20:36 +0200
                Re: JUnit Test von JButton: Action wird nicht erkannt "Christian H. Kuhn" <qno-news@qno.de> - 2016-07-23 23:15 +0200
          Re: JUnit Test von JButton: Action wird nicht erkannt Wanja Gayk <brixomatic@yahoo.com> - 2016-07-19 23:02 +0200
            Re: JUnit Test von JButton: Action wird nicht erkannt "Christian H. Kuhn" <qno-news@qno.de> - 2016-07-20 12:33 +0200
    GUI-Update über Swing-EDT (was: JUnit Test von JButton: Action wird nicht erkannt) "Christian H. Kuhn" <qno-news@qno.de> - 2016-07-15 12:03 +0200
      Re: GUI-Update über Swing-EDT Patrick Roemer <sangamon@netcologne.de> - 2016-07-15 22:43 +0200
        Re: GUI-Update über Swing-EDT "Christian H. Kuhn" <qno-news@qno.de> - 2016-07-15 23:18 +0200
        Re: GUI-Update über Swing-EDT "Christian H. Kuhn" <qno-news@qno.de> - 2016-07-16 15:24 +0200
          Re: GUI-Update über Swing-EDT Patrick Roemer <sangamon@netcologne.de> - 2016-07-16 16:42 +0200
            Re: GUI-Update über Swing-EDT "Christian H. Kuhn" <qno-news@qno.de> - 2016-07-16 23:05 +0200
              Re: GUI-Update über Swing-EDT "Christian H. Kuhn" <qno-news@qno.de> - 2016-07-17 16:02 +0200

csiph-web