Portál AbcLinuxu, 24. dubna 2024 20:03


Dotaz: maximalizace JFrame

20.7.2009 15:42 Alexej Pyskin
maximalizace JFrame
Přečteno: 689×
Odpovědět | Admin

Tento programek by mel spustit maximalizovane okno:

mport java.awt.Frame;
import javax.swing.*;
import java.awt.Toolkit;

public class Test
{
    JFrame frame;

    public Test()
    {
        frame = new JFrame("Test");
        frame.setExtendedState(Frame.MAXIMIZED_BOTH);
        frame.setVisible(true);
        System.out.println(Toolkit.getDefaultToolkit().isFrameStateSupported(Frame.MAXIMIZED_BOTH));
    }
    
    public static void main(String[] args)
    {
        Test app = new Test();
    }
}

Problem je, ze se okno sice otevre, ale ma rozmery asi 20x20px. V dokumentaci jsem se docetl, ze ne na vsech platformach je metoda setExtendedState funkcni, proto ten radek s isFrameStateSupport. isFrameStateSupport() mi vraci true, coz znamena, ze podporovana by byt mela. Kdyz si prosim nekdo prelozite ten programek, spusti se hlavni okno maximalizovane nebo ne?


Řešení dotazu:


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

Odpovědi

20.7.2009 15:47 cronin | skóre: 49
Rozbalit Rozbalit vše Re: maximalizace JFrame
Odpovědět | | Sbalit | Link | Blokovat | Admin
frame.setSize(Toolkit.getDefaultToolkit().getScreenSize());
20.7.2009 17:37 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: maximalizace JFrame
To ale neudělá maximalizaci okna, ale zvětší velikost okna na velikost obrazovky. V tom je rozdíl – okna mohou mít tři nebo více stavů (minimalizované/ikona, otevřené okno, maximalizované okno) – maximalizace znamená změna stavu okna, ten váš kód ponechá okno ve stavu otevřené, pouze jej roztáhne přes celou obrazovku. Navíc na systémech s více monitory to roztáhne na velikost bůhvíčeho.
20.7.2009 19:42 cronin | skóre: 49
Rozbalit Rozbalit vše Re: maximalizace JFrame
Aha. Tak som o tom neuvazoval. Zameral som sa na vysledny efekt. Vdaka za upresnenie; opytujuci sa si snad vyberie, co potrebuje.
20.7.2009 17:38 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: maximalizace JFrame
Odpovědět | | Sbalit | Link | Blokovat | Admin
V jakém window manageru to testujete?
20.7.2009 22:14 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: maximalizace JFrame
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zavolejte před tím frame.setVisible(true) ještě frame.pack(), aby se spočítaly správné rozměry okna. Jinak se to musí udělat až v okamžiku zobrazení, a nově vypočtené rozměry v tom okamžiku pravděpodobně přebijí nastavenou maximalizaci. Ve Windows se maximalizace udrží i přes to, ale třeba v okenním manažeru KDE 3.5 už ne. Rozdíl asi plyne z různécho chování okenních manažerů k tomu, co znamená maximalizovaný stav okna.
11.4.2011 01:28 dook
Rozbalit Rozbalit vše Re: maximalizace JFrame
Odpovědět | | Sbalit | Link | Blokovat | Admin
Hoj, pro vsechny co hledaji a nasli tento titulek prez Google nebo jiny vyhledavac:

JFrame window;
GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
Rectangle maxBounds = environment.getMaximumWindowBounds();
window.setSize(new Dimension((int)maxBounds.getWidth(), (int)maxBounds.getHeight()));
Mam to odzkouseny s decorated i undecorated JFrame, getMaximumWindowBounds by melo pocitat se vsim na plose co je panel a tak.

Hodne zdaru!
11.4.2011 08:16 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: maximalizace JFrame
Ten váš kód ale nedělá maximalizaci okna, nýbrž nastaví rozměry okna na největší obdélník, který se vejde na plochu. Je to stejná chyba, jako v komentáři 1.

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.