© 2013 All rights reserved.
0

Java a základy GUI #5 – InternalFrame

Program, který nemá grafické rozhraní, nikdy nemůže konkurovat programu s grafickým rozhraním. V tomto již 5. článku na téma GUI si řekneme něco o InternalFrame.

Internal Frames, neboji vnitřní okna, mohou být u grafického rozhraní dost často používaným elementem.

Jedná se o okna, které jsou vkládány do některého dalšího elementu, například panelu a tímto panelem omezeny. V praxi to vypadá tak, že okno vytvořené jako InternalFrame se nedostane za hranice elementu, ve kterém je umístěno.

InternalFrame

InternalFrame

Použití InternalFrames je stejné jako například použití Frame (importujeme JFrame z javax.swing a dědíme JFrame k třídě s rozhraním), jenom v tomto případě potřebujeme importovat javax.swing.JInternalFrame a ke třídě dědíme JInternalFrame.

Tím nám vzniká okno, kterému můžeme stejně jako u JFrame nastavit například rozměry, velikost, titulek a podobně.

Otevřené okno je pouze omezeno elementem, do kterého je přidáno, ale chová se jako klasické okno, můžeme jej přesouvat, měnit velikost (toto záleží na nastavení, ke kterému se dostanu), nebo třeba minimalizovat.

Příprava hlavního okna

Vytvoříme si jednoduchý příklad, ze kterého bude použití InternalFrame snad všem jasné.

Jako první si musíme připravit okno, do kterého budeme naše vnitřní okno vkládat. Vytvoříme si klasické JFrame Window, ve kterém si dále vytvoříme Jpanel, do kterého přidáme JDesktopPane. Tento JDesktopPane bude sloužit právě pro zobrazování vnitřních oken.

Celému oknu nastavíme větší velikost, abychom do něj mohli vkládat další okna:

Tím máme vytvořené prázdné okno o rozměrech 800×800, ve kterém je JDesktopPane.

Konečně se můžeme vrhnout do vytvoření „vnitřního okna“. Jak jsem již napsal, je to stejné jako vytvoření JFrame, jenom s drobnými odlišnostmi.

Vytvoříme jej tak, že dědíme JInternalFrame z javax.swing:

Vidíte že použití je stejné jako u Frame, jenom s tím rozdílem že dědíme jinou třídu.

Základní nastavení okna

Hned na začátku se InternalFrame ale od klasického okna Frame liší. Internal Frame Window můžeme jednoduše nastavit jeho základní vlastnosti. Tyto vlastnosti se týkají práce s oknem a to konkrétně horní lišty pro práci s oknem (minimalizace, zavření okna, maximalizace) a změny rozměrů okna.

Všechny tyto vlastnosti nastavujeme voláním Super(), jehož prvním parametrem je nastavení titulku okna a dalšími parametry změna vlastností dosazením true/false a to v tomto pořadí:

  • změna rozměrů
  • zavření okna křížkem
  • maximalizace okna
  • minimalizace okna

Všechny tyto parametry jsou nepovinné, to znamená že je nemusíte všechny zadávat:

Ovšem v případě že nejsou parametry zadány jsou brány jako FALSE.

Nyní již můžeme vytvořit celé okno:

Pokud je hotovo, vrátíme se do třídy GUI, kde máme hotový JFrame a připravený JDesktopPane pro vkládání oken. V této třídě už pouze vytvoříme novou instanci třídy Frame1 a přidáme ji do JdesktopPane:

Po zkompilování a spuštění by mělo vzniknout velké okno JFrame, ve kterém bude zobrazeno jedno okno malé ve formě právě JInternalFrame.

Základní práce s InternalFrame

Pro přístup k otevřeným oknům nám java nabízí metodu getAllFrames(), která vrací Array všech otevřených oken vázaných k elementu se kterým je metoda volána.

V našem příkladě si tedy vytvoříme několik instancí třídy Frame1, a všechny přidáme do panelu abychom mohli vyzkoušet práci s těmito okny:

Nyní stačí pouze zavolat metodu getAllFrames(); která vrátí všechna tato okna. V cyklu for jim můžeme například nastavit Location, tak aby se vzájemně překrývala a byla postupně posunuta:

Podobným způsobem bychom mohli všechna okna například zavřít:

Comments are closed for this page

About
Hi, i am programmer from the Czech Republic. I love web development (Ruby, Ruby on Rails, PHP, Nette) and iOS development (Objective-C, Cocoa).
To cooperate, here is my phone:
+420 608 836