Portál AbcLinuxu, 9. května 2024 06:50


Dotaz: setUndecorated() po stisku tlacitka - Java

21.7.2009 10:56 FcBk
setUndecorated() po stisku tlacitka - Java
Přečteno: 210×
Odpovědět | Admin

Dobrý den, potřebuji ve své aplikaci nastavit oddělání dekorací komponenty JFrame po stisku tlačítka. Toho jsem chtěl dosáhnout tímto kódem:

setUndecorated(true);

Pokud tento řádek použiji v konstruktoru, vše je v pořádku a zobrazené okno je bez dekorací. Pokud ho použiji v obsluze stisku tlačítka, dostanu chybu

java.awt.IllegalComponentStateException: The frame is displayable.

V dokumentaci píší: Disables or enables decorations for this frame. This method can only be called while the frame is not displayable. Jak ale poznám, kdy je a kdy není frame displayable?

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.7.2009 15:36 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: setUndecorated() po stisku tlacitka - Java
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zavoláte na něm metodu isDisplayable(). V dokumentaci té metody se zároveň dozvíte, co to znamená.
21.7.2009 17:58 FcBk
Rozbalit Rozbalit vše Re: setUndecorated() po stisku tlacitka - Java

Tu dokumentaci jsem cetl, ale stale mi z toho neni jasne jak dosahnout oddelani dekoraci u jiz zobrazeneho JFramu.

21.7.2009 18:32 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: setUndecorated() po stisku tlacitka - Java
java.awt.Component.isDisplayable()
A component is made undisplayable either when it is removed from a displayable containment hierarchy or when its containment hierarchy is made undisplayable. A containment hierarchy is made undisplayable when its ancestor window is disposed.
Tzn. u vnořených komponent musíte komponentu vyjmout, top-level komponenta se nastaví do stavu undisplayable voláním metody dispose().
22.7.2009 15:05 FcBk
Rozbalit Rozbalit vše Re: setUndecorated() po stisku tlacitka - Java

No jo, jenze ja chci odstranit dekorace u komponenty JFrame, ktera stoji v hierarchii nejvyse. Kdyz v ni zavolam metodu dispose() tak se frame zavre. Jak to tedy vyresit?

22.7.2009 15:14 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: setUndecorated() po stisku tlacitka - Java
Jak to tedy vyresit?
Přesně tak, jak je to napsané v dokumentaci. Zavolat dispose(), čímž se odstraní všechny asociované zdroje (okna apod.), a zůstane pouze abstraktní reprezentace formuláře v paměti. Následně pak zavolat pack() nebo setVisible(true) pro opětovné přeložení abstraktní reprezentace do GUI prvků.

Jinak dokumentace runtime knihovny Javy je volně dostupná třeba na http://java.sun.com/javase/6/docs/api/, stačí si ji přečíst. Zatím se pořád ptáte na věci, které jsou napsané přímo v dokumentaci metody, na kterou se ptáte.
22.7.2009 16:11 FcBk
Rozbalit Rozbalit vše Re: setUndecorated() po stisku tlacitka - Java

Presne tak jsem to mel, chybu zpusobovala mnou zpusobena chyba z nepozornosti, omlouvam se a dekuji za rady.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.