wiki:GnowsisGuiTips

Version 2 (modified by anonymous, 18 years ago) (diff)

--

GnowsisGuiTips

first of all: use the GnognoComp framework.

Then, for fancy looks have

  • NicerGui - all our ideas to make the gui nicer

Revalidate, Invalidate in Swing

copied from http://www.uni-koeln.de/rrzk/kurse/unterlagen/java/gui/docs/layouts.html: invalidate setzt nur den Layoutzustand der Komponente und aller ihrer Vorfahren (parent, ancestors) auf ungültig, stößt aber kein neues Layout an. Man kann so mehrere invalidates machen, muß danach aber selbst das validate aufrufen. Letzeres ist nicht threadsafe.

revalidate setzt ebenfalls den Layoutzustand als ungültig, aber nicht bis zum obersten Vorfahren, sondern nur bis zu einem sogenannten LayoutRoot (o.ä.). Ein LayoutRoot ist ein Fenster, das sein inneres Layout ändern kann, ohne seine Vorfahren zu beeinflussen. Hier handelt es sich also um eine Optimierung: es muß nicht der oberste Vorfahr (das umfassende Window) neu layouted werden, sondern evtl. nur ein Unterpanel.

revalidate stößt aber auch selbst das Neuberechnen des Layouts an, und zwar threadsafe, indem es eine entsprechende Anforderung in die EventQueue platziert. Man kann davon ausgehen, dass bei der Abarbeitung mehrere revalidates gemeinsam abgearbeitet werden.

conclusion: use revalidate if you really changed much, use invalidate() and a call to layout() if you do many changes in batch. one call to layout() should do.