java swing tutorial container
Tento komplexný videonávod Java Swing vysvetľuje rôzne komponenty rozhrania GUI Swing Framework a súvisiace koncepty ako JPanel, JFrame, JButton atď.:
Na vytváranie aplikácií, ktoré majú vizuálne rozhranie, používame grafické používateľské rozhrania (bežne nazývané GUI), ktoré používateľom uľahčujú používanie aplikácie.
Vďaka vizuálnemu rozhraniu pre aplikáciu je v aplikácii ľahká navigácia, efektívnejšie používanie ovládacích prvkov a vizuálna príťažlivosť pre používateľa.
Swing sa používa hlavne na vytváranie grafického používateľského rozhrania pre aplikácie.
=> Navštívte tu a pozrite si sériu školení Java pre všetkých.
Čo sa dozviete:
- Výukový program o videách Java Swing
- Čo je to Java Swing
- Komponenty Java Swing
- Triedy hojdačky v Jave
- Swing Vs JavaFX
- Záver
Výukový program o videách Java Swing
Čo je to Java Swing
Java poskytuje mnoho rámcov GUI, ktoré nám pomáhajú pri vývoji rôznych aplikácií GUI. Jeden z nich sme videli v našom predchádzajúcom tutoriáli, tj. Abstract Window Toolkit alebo AWT. AWT je jedným z najstarších rámcov GUI v Jave a tiež závisí od platformy. Ďalšou nevýhodou AWT sú komponenty s vysokou hmotnosťou.
V tomto výučbe sa budeme zaoberať ešte ďalším rámcom GUI v Jave, tj. „SWING“. Rámec Swing v Jave je súčasťou Java Foundation Classes alebo sa bežne nazýva JFC. JFC je API, ktoré je podobné MFC (Microsoft Foundation Classes) v C ++. JFC obsahuje Swing, AWT a Java2D.
Rámec Swing v Jave je postavený na vrchole rámca AWT a dá sa použiť na vytváranie aplikácií GUI rovnako ako AWT. Ale na rozdiel od AWT sú komponenty Swing ľahké a sú nezávislé na platforme.
Rámec Swing je napísaný výlučne v prostredí Java. Rámec Swing v Jave sa poskytuje prostredníctvom balíka „javax.swing“. Triedy v balíku javax.swing sa začínajú písmenom „J“. V balíku javax.swing teda budeme mať triedy ako JButton, JFrame, JTextField, JTextArea atď.
Vo všeobecnosti má Swing API každý ovládací prvok definovaný v balíku javax.swing, ktorý je prítomný v AWT. Takže swing určitým spôsobom funguje ako náhrada AWT. Swing má tiež rôzne tably s kartami s rozšírenými komponentmi. Swing API v Jave prispôsobuje architektúru MVC (Model View Controller).
Hlavné charakteristiky tejto architektúry sú:
- Údaje otočnej súčasti sú reprezentované pomocou modelu.
- Je vizuálne znázornená pomocou pohľadu.
- Komponent radiča architektúry MVC načíta vstup od používateľa v zobrazení a potom sa tieto zmeny odovzdajú údajom komponentu.
- V každej zložke Swing sú pohľad a ovládač spojené, zatiaľ čo model je samostatný. To dáva hojdačke zapojiteľný vzhľad a vlastnosti.
Vlastnosti rozhrania API sú zhrnuté nižšie.
- Komponenty Swing sú nezávislé na platforme.
- API je rozšíriteľné.
- Komponenty hojdačky sú ľahké. Komponenty hojdačky sú napísané v čistej Jave a tiež sú komponenty vykresľované pomocou kódu Java namiesto systémových volaní.
- Swing API poskytuje sadu pokročilých ovládacích prvkov, ako sú TabbedPane, Tree, Colorpicker, ovládacie prvky tabuľky atď., Ktoré sú bohaté na funkčnosť.
- Ovládacie prvky výkyvu sú vysoko prispôsobiteľné. Je to tak preto, lebo vzhľad alebo vzhľad a dojem z komponentu je nezávislý od vnútorného zobrazenia, a preto ho môžeme prispôsobiť tak, ako požadujeme.
- Môžeme jednoducho zmeniť hodnoty, a tým zmeniť vzhľad a dojem za behu.
Komponenty Java Swing
Swing má veľkú sadu komponentov, ktoré môžeme zahrnúť do našich programov a využívať bohaté funkcie, pomocou ktorých môžeme vyvíjať vysoko prispôsobené a efektívne aplikácie GUI.
Čo je to teda komponent?
Komponent možno definovať ako ovládací prvok, ktorý je možné vizuálne znázorniť a je zvyčajne nezávislý. Má špecifickú funkcionalitu a je reprezentovaný ako samostatná trieda v Swing API.
Napríklad, trieda JButton v swing API je tlačidlový komponent a poskytuje funkčnosť gombíka.
Jeden alebo viac komponentov tvorí skupinu a túto skupinu je možné umiestniť do „kontajnera“. Kontajner poskytuje priestor, v ktorom môžeme zobrazovať komponenty a tiež spravovať ich rozstupy, rozloženie atď.
V prostredí Java sú kontajnery rozdelené do dvoch typov, ako je uvedené nižšie:
Triedy hojdačky v Jave
Hierarchia rozhrania Swing API v prostredí Java je uvedená nižšie:
Ako je zrejmé z vyššie uvedenej hierarchie, máme triedy kontajnerov - rám, dialógové okno, panel, applet atď. Existujú aj triedy komponentov odvodené z triedy JComponent rozhrania Swing API. Niektoré z tried, ktoré dedia z JComponent, sú JLabel, JList, JTextBox atď.
Niektoré z dôležitých tried rozhrania Swing API sú:
- JWindow: Trieda Swing JWindow dedí triedu Window priamo. Trieda JWindow používa ako predvolené rozloženie „BorderLayout“.
- JPanel: JPanel je potomkom triedy JComponent a je na podobných linkách ako Panel triedy AWT a ako predvolené rozloženie má „FlowLayout“.
- JFrame: JFrame pochádza z triedy rámcov. Komponenty pridané do rámu sa nazývajú obsahy rámu.
- JLabel: Trieda JLabel je podtriedou JComponent. Používa sa na vytváranie textových štítkov v aplikácii.
- JButton: Funkčnosť tlačidla vo Swingu poskytuje JButton. K objektu JButton môžeme priradiť reťazec, ikonu alebo oboje.
- JTextField: Trieda JTextField poskytuje textové pole, v ktorom môžeme upravovať jeden riadok textu.
JFrame v Jave
Rámček je vo všeobecnosti kontajner, ktorý môže obsahovať ďalšie komponenty, ako sú tlačidlá, štítky, textové polia atď. Okno rámčeka môže obsahovať nadpis, ohraničenie a tiež ponuky, textové polia, tlačidlá a ďalšie komponenty. Aplikácia by mala obsahovať rám, aby sme do nej mohli pridávať komponenty.
Rám v prostredí Java Swing je definovaný v triede javax.swing.JFrame. Trieda JFrame dedí triedu java.awt.Frame. JFrame je ako hlavné okno aplikácie GUI využívajúce swing.
Objekt okna JFrame môžeme vytvoriť pomocou dvoch prístupov:
webové stránky na stiahnutie youtube videí do mp3
# 1) Rozšírením triedy JFrame
Prvým prístupom je vytvorenie novej triedy na zostavenie rámca. Táto trieda dedí z triedy JFrame balíka javax.swing.
Tento prístup implementuje nasledujúci program.
import javax.swing.*; class FrameInherited extends JFrame{ //inherit from JFrame class JFrame f; FrameInherited(){ JButton b=new JButton('JFrame_Button');//create button object b.setBounds(100,50,150, 40); add(b);//add button on frame setSize(300,200); setLayout(null); setVisible(true); } } public class Main { public static void main(String() args) { new FrameInherited(); //create an object of FrameInherited class } }
Výkon:
# 2) Vytvorením inštancie triedy JFrame
import javax.swing.*; public class Main { public static void main(String() args) { JFrame f=new JFrame('JFrameInstanceExample');//create a JFrame object JButton b=new JButton('JFrameButton');//create instance of JButton b.setBounds(100,50,150, 40);//dimensions of JButton object f.add(b);//add button in JFrame f.setSize(300,200);//set frame width = 300 and height = 200 f.setLayout(null);//no layout manager specified f.setVisible(true);//make the frame visible } }
Výkon:
Vo vyššie uvedenom programe sme vytvorili rám z triedy JFrame vytvorením inštancie triedy JFrame.
JPanel v Jave
Panel je komponent, ktorý je obsiahnutý vo vnútri okna rámu. Rám môže mať vo svojom vnútri viac ako jeden panelový komponent, pričom každý panelový komponent má niekoľko ďalších komponentov.
Z ľahšieho hľadiska môžeme na rozdelenie rámu použiť panely. Každý panel v sebe zoskupuje niekoľko ďalších komponentov. Inými slovami, panely používame na usporiadanie komponentov vo vnútri rámu.
Trieda rozhrania API, ktorá implementuje komponent panelu, je JPanel. Trieda JPanel dedí z JComponentu a má FlowLayout ako svoje predvolené rozloženie.
Nasledujúci program demonštruje vytvorenie panelového kontajnera v rámci pomocou tried balíkov javax.swing.
import javax.swing.*; class JPanelExample { JPanelExample(){ JFrame frame = new JFrame('Panel Example'); //create a frame JPanel panel = new JPanel(); //Create JPanel Object panel.setBounds(40,70,100,100); //set dimensions for Panel JButton b = new JButton('ButtonInPanel'); //create JButton object b.setBounds(60,50,80,40); //set dimensions for button panel.add(b); //add button to the panel frame.add(panel); //add panel to frame frame.setSize(400,400); frame.setLayout(null); frame.setVisible(true); } } public class Main { public static void main(String() args) { new JPanelExample(); //create an object of FrameInherited class } }
Výkon:
Tu máme Rám. Vo vnútri rámu vytvoríme panel. Potom vo vnútri panelu vytvoríme tlačidlo. Týmto spôsobom môžeme použiť panel na uchytenie ostatných komponentov.
JTextArea v Jave
TextArea definuje editovateľné textové pole. Môže mať viac riadkov. Trieda hojdačky, ktorá definuje textovú oblasť, je JTextArea a dedí triedu JTextComponent.
verejná trieda JTextArea rozširuje JTextComponent
Trieda JTextArea obsahuje 4 konštruktory, ktoré nám umožňujú vytvárať textovú oblasť s rôznymi možnosťami.
- JTextArea (): Predvolený konštruktor. Vytvorte prázdnu textovú oblasť.
- JTextArea (String s): Vytvorí textovú oblasť s predvolenou hodnotou s.
- JTextArea (int riadok, int stĺpec): Vytvorí textovú oblasť so zadaným riadkom x stĺpcom.
- JTextArea (String s, int riadok, int stĺpec): Vytvorí text are2a so zadaným stĺpcom x a predvolenou hodnotou s.
Nasledujúci program Java zobrazuje príklad komponentu JTextArea v hojdačke.
import javax.swing.*; class JTextAreaExample { JTextAreaExample(){ JFrame frame= new JFrame(); JTextArea t_area=new JTextArea('JTextArea example'); //create object of JTextArea t_area.setBounds(10,30, 150,100); //set its dimensions frame.add(t_area); //add it to the frame frame.setSize(200,200); frame.setLayout(null); frame.setVisible(true); } } public class Main { public static void main(String() args) { new JTextAreaExample(); //create an object of TextAreaExample class } }
Výkon:
JButton V Jave
Tlačidlo je komponent, ktorý sa používa na vytvorenie tlačidla s menom alebo štítkom. Pri hojdaní je triedou, ktorá vytvára označené tlačidlo, JButton. JButton dedí triedu AbstractButton. K tlačidlu môžeme priradiť udalosť ActionListener, aby po stlačení urobila nejakú akciu.
Implementujme ukážkový program pre JButton v prostredí Java Swings.
ako spustiť bleskový objekt rázovej vlny
import javax.swing.*; public class Main { public static void main(String() args) { JFrame frame=new JFrame('JButton Example'); //create JFrame object JButton button=new JButton('Button'); //Create a JButton object button.setBounds(50,50,75,35); //set dimensions for button frame.add(button); //add button to the frame frame.setSize(250,200); frame.setLayout(null); frame.setVisible(true); } }
Výkon:
JList V Jave
Zoznam sa skladá z viacerých textových položiek. Používatelia môžu zvoliť jednu alebo viac položiek súčasne. Triedou, ktorá implementuje zoznam do rozhrania API, je JList. JList je potomkom triedy JComponent.
Ďalej sú uvedené konštruktory triedy JList.
- JList (): Predvolený konštruktor, ktorý vytvára prázdny zoznam iba na čítanie.
- JList (pole () listItem): Vytvorte JList, ktorý pôvodne obsahuje prvky poľa listItem.
- JList (ListModel dataModel): Vytvorí zoznam s prvkami zo zadaného modelu dataModel.
Jednoduchá ukážka komponentu JList je uvedená nižšie.
import javax.swing.*; public class Main { public static void main(String() args) { JFrame frame= new JFrame('JList Example'); //create a list model and add items to it DefaultListModel colors = new DefaultListModel<>(); colors.addElement('Red'); colors.addElement('Green'); colors.addElement('Blue'); //create JList object and add listModel to it JList colorsList = new JList<>(colors); colorsList.setBounds(100,100, 75,50); frame.add(colorsList); //add list to the frame frame.setSize(400,400); frame.setLayout(null); frame.setVisible(true); } }
Výkon:
Vo vyššie uvedenom programe najskôr definujeme listModel s farebnými položkami. Potom vytvoríme objekt JList a pridáme k nemu listModel. Ďalej sa objekt JList pridá k objektu rámca, ktorý sa potom zobrazí.
JComboBox v Jave
Trieda JCombobox zobrazuje zoznam možností, z ktorých si môže používateľ vybrať jednu z možností. Vybraná voľba je hore. JComboBox je odvodený z triedy JComponent.
Toto sú konštruktory poskytované triedou JComboBox:
- JComboBox (): Predvolený konštruktor, ktorý vytvára ComboBox s predvoleným dátovým modelom.
- JComboBox (položky () objektu): Tento konštruktor vytvorí ComboBox, ktorý má položky ako prvky daných položiek poľa.
- JComboBox (vektorové položky): Tento konštruktor číta prvky daného vektora a vytvára ComboBox s týmito prvkami ako jeho položkami.
Trieda JComboBox poskytuje aj metódy na pridávanie / odstraňovanie položiek, pridávanie ActionListener, ItemListener atď.
Nasledujúci príklad demonštruje implementáciu JComboBox v Jave.
import javax.swing.*; class ComboBoxExample { JFrame frame; ComboBoxExample(){ frame=new JFrame('ComboBox Example'); //create a string array String country()={'India','SriLanka','Singapore','Maldives','SeyChelles'}; //create a combobox object with given string array JComboBox countries=new JComboBox(country); countries.setBounds(50, 50,90,20); frame.add(countries); //add it to the frame frame.setLayout(null); frame.setSize(200,300); frame.setVisible(true); } } public class Main { public static void main(String arg()) { new ComboBoxExample(); } }
Výkon:
JSlider v Jave
Posuvník nám umožňuje zvoliť konkrétny rozsah hodnôt. V rozhraní Java Swing API je JSlider trieda, ktorá sa používa na implementáciu posúvača.
Nasledujú konštruktory poskytované triedou JSlider.
- JSlider (): Predvolený konštruktor, ktorý vytvorí posúvač, ktorý má ako počiatočnú hodnotu 50 a rozsah 0 - 100.
- JSlider (int orientácia): Tento konštruktor vytvorí posuvník rovnako ako vyššie, ale so zadanou orientáciou. Hodnota orientácie môže byť buď JSlider.HORIZONTÁLNE alebo JSlider.VERTICAL.
- JSlider (int min, int max): Tento konštruktor sa používa na vytvorenie vodorovného posúvača pomocou daných min a max.
- JSlider (int min, int max, int value): Tento konštruktor vytvorí posuvník, ktorý je vodorovný so zadanou hodnotou min, max a value.
- JSlider (int orientácia, int min, int max, int hodnota): Tento konštruktor vytvorí posuvník so zadanou orientáciou, min, max a hodnotou.
Nasledujúci program demonštruje JSlider v Jave so začiarknutím. Tento program tiež demonštruje použitie metód podporovaných triedou JSlider.
import javax.swing.*; class SliderExample extends JFrame { public SliderExample() { //create a slider object JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 50, 25); //set major and minor ticks for the slider slider.setMinorTickSpacing(2); slider.setMajorTickSpacing(10); slider.setPaintTicks(true); slider.setPaintLabels(true); JPanel panel = new JPanel(); panel.add(slider); //add slider to the panel add(panel); } } public class Main{ public static void main(String s()) { SliderExample frame=new SliderExample(); frame.pack(); frame.setVisible(true); } }
Výkon:
Spracovanie udalostí v Jave
Udalosť je možné definovať ako zmenu stavu objektu. Z hľadiska grafického používateľského rozhrania dôjde k udalosti, keď koncový používateľ interaguje s komponentmi grafického používateľského rozhrania. Udalosti, ktoré sa spustia v grafickom používateľskom rozhraní, môžu byť kliknutie na tlačidlo, posúvanie, výber položiek zoznamu, zmena textu atď.
Udalosť, ktorá sa vyskytuje v grafickom používateľskom rozhraní uvedenom vyššie, je väčšinou prioritnou udalosťou. Môžeme tiež mať nejaké udalosti na pozadí, ako je dokončenie operácie na pozadí, expirácia časovača atď.
Spracovanie udalostí je mechanizmus, prostredníctvom ktorého sa vykonáva akcia, keď dôjde k udalosti. Na tento účel definujeme metódu, ktorá sa nazýva aj obslužná rutina udalosti, ktorá sa volá, keď dôjde k udalosti. Java používa na generovanie a spracovanie udalostí štandardný mechanizmus nazývaný „Delegation event model“.
Model udalosti delegácie pozostáva z:
# 1) Zdroj: Zdrojom udalosti je objekt. Objekt, na ktorom sa udalosť stane, je zdroj a tento zdroj je zodpovedný za zasielanie informácií o udalosti obslužnej rutine udalosti.
# 2) poslucháč: Poslucháč nie je nič iné ako obsluha udalosti zodpovedná za vykonanie akcie, keď dôjde k udalosti. V Jave je poslucháč objekt, ktorý čaká na udalosť. Akonáhle dôjde k udalosti, poslucháč ju spracuje.
Požiadavka je zaregistrovať poslucháča k objektu, aby ho pri udalosti mohol poslucháč spracovať.
Napríklad,pre udalosť kliknutia na tlačidlo môžeme mať nasledujúcu postupnosť krokov.
- Používateľ klikne na tlačidlo, ktoré generuje udalosť Click.
- Vytvorí sa zodpovedajúci objekt triedy udalostí a údaje o zdroji a udalosti sa odovzdajú tomuto objektu.
- Tento objekt udalosti sa potom odovzdá triede poslucháča zaregistrovanej v objekte.
- Poslucháč vykoná a vráti sa.
Teraz si povieme niečo o niektorých poslucháčoch poskytovaných prostredím Java.
ActionListener v Jave
ActionListener je poslucháčom tlačidla alebo položky ponuky. Keď klikneme na tlačidlo, zapojené tlačidlo Listener je actionListener. ActionListener je upozornený v ActionEvent.
Balík udalostí java.awt.an definuje rozhranie ActionListener. Toto rozhranie má iba jednu metódu actionPerformed ().
public abstract void actionPerformed (ActionEvent e);
Keď kliknete na registrovaný komponent ako Button, automaticky sa vyvolá metóda actionPerformed ().
Najbežnejším prístupom k zahrnutiu ActionListener do programu je implementácia rozhrania ActionListener a následná implementácia metódy actionPerformed ().
Kroky na implementáciu triedy ActionListener sú tieto:
# 1) Implementujte rozhranie ActionListerner.
verejná trieda ActionListenerImpl Implementuje ActionListener
# 2) Zaregistrujte komponent u tohto poslucháča. Ak je tlačidlo komponentom, ktorý chceme zaregistrovať u poslucháča, zaregistrujeme ho nasledovne:
button.addActionListener (instanceOfListenerclass);
# 3) Implementujte / prepíšte metódu actionPerformed ().
public void actionPerformed (ActionEvent e){ //code to perform action }
Takže pomocou vyššie uvedených krokov môžeme spojiť každú udalosť s komponentom GUI.
Nasledujúci príklad demonštruje udalosť Click button pomocou ActionListener.
import javax.swing.*; import java.awt.event.*; public class Main { public static void main(String() args) { JFrame frame=new JFrame('Button Click Example'); final JTextField text_field=new JTextField(); //JTextField object text_field.setBounds(50,100, 150,20); JButton click_button=new JButton('Click Me!!!'); //JButton object click_button.setBounds(20,50,75,30); click_button.addActionListener(new ActionListener(){ //add an event and take action public void actionPerformed(ActionEvent e){ text_field.setText('You Clicked the button'); } }); //add button and textfield to the frame frame.add(click_button);frame.add(text_field); frame.setSize(400,400); frame.setLayout(null); frame.setVisible(true); } }
Výkon:
Vyššie uvedený program implementuje udalosť ActionListener. Udalosť je udalosť kliknutia na tlačidlo a k nej sme priradili ActionListener, ktorý po kliknutí na tlačidlo zobrazí text v textovom poli.
KeyListener v Jave
Zakaždým, keď dôjde k zmene stavu kľúča, je o tom informovaný KeyListener. Rovnako ako ActionListener, aj KeyListener sa nachádza v balíku java.awt.event.
Rozhranie KeyListener poskytuje nasledujúce metódy:
public abstract void keyPressed (KeyEvent e);
public abstract void keyReleased (KeyEvent e);
verejné abstraktné neplatné keyTyped (KeyEvent e);
Vyššie uvedené metódy musíme implementovať, aby sme priradili kľúčové udalosti ku komponentu. Necháme na používateľa, aby implementoval príklad KeyListeneru pomocou výkyvov v Jave.
Swing Layouts in Java
Keď usporiadame rôzne komponenty do kontajnera, potom hovoríme, že tieto komponenty rozložíme. Rozloženie teda možno definovať ako umiestnenie komponentov v kontajneri.
Pokiaľ je menej komponentov, je možné ich umiestňovať pretiahnutím ručne. Je však ťažké usporiadať komponenty vo väčšom počte. V tomto okamihu nám prichádza na pomoc Layout Manager Java.
LayoutManager je zodpovedný za rozloženie komponentov v aplikáciách GUI. LayoutManager je rozhranie, ktoré implementujú všetky triedy manažérov rozloženia. Java poskytuje nasledujúce triedy LayoutManager.
LayoutManager | Popis |
---|---|
javax.swing.GroupLayout | Zoskupí komponenty a potom ich umiestni do kontajnera. |
java.awt.BorderLayout | Komponenty sú rozmiestnené tak, aby sa zmestili do piatich smerov, a to na stred, východ, západ, juh, sever. |
java.awt.FlowLayout | Toto je predvolené rozloženie. Položí komponenty do smerového toku. |
java.awt.GridLayout | Usporiada komponenty do obdĺžnikovej mriežky. |
javax.swing.BoxLayout | Komponenty sú usporiadané v krabici. |
java.awt.CardLayout | Každý komponent sa v balíku považuje za kartu a súčasne je viditeľný iba jeden komponent. |
java.awt.GridBagLayout | Usporiada komponenty vertikálne, horizontálne alebo dokonca pozdĺž ich základných línií. Súčasti nemusia byť rovnako veľké. |
javax.swing.ScrollPaneLayout | Používa triedu JScrollPane a zodpovedá za usporiadanie komponentov v rolovateľných kontajneroch. |
javax.swing.SpringLayout atď. | Poskytuje sa sada obmedzení, ako je vodorovná a zvislá vzdialenosť medzi komponentmi atď., A komponenty sú usporiadané podľa tejto sady obmedzení. |
V tomto tutoriáli sa budeme venovať iba FlowLayout a GridLayout.
FlowLayout v Jave
FlowLayout usporiada komponenty v smere toku, jeden za druhým. Toto je predvolené rozloženie pre kontajnery ako Panel a Applet.
Trieda FlowLayout v Jave, ktorá predstavuje správcu FlowLayout, obsahuje nasledujúce polia a konštruktory.
Polia triedy FlowLayout
- verejné statické konečné int VEDENIE
- verejný statický konečný int TRAILING
- verejný statický konečný int LEVÝ
- verejný statický konečný int PRAVÝ
- verejné statické konečné int CENTRUM
Vyššie uvedené polia definujú polohy, v ktorých budú komponenty umiestnené alebo zarovnané.
Konštruktéri triedy FlowLayout
- FlowLayout (): Toto je predvolený konštruktor. Tento konštruktor vytvára rozloženie toku, ktoré má centrálne zarovnané komponenty s predvolenou medzerou 5 jednotiek v horizontálnom a vertikálnom smere.
- FlowLayout (int align): Tento konštruktor vytvorí rozloženie toku so zadanou hodnotou zarovnania as vodorovnou a zvislou medzerou 5 jednotiek.
- FlowLayout (int align, int hgap, int vgap): Vytvorí rozloženie toku so zadanou hodnotou zarovnania a vodorovnou a zvislou medzerou.
Nižšie je uvedený príklad FlowLayout v Jave.
import javax.swing.*; import java.awt.*; class FlowLayoutClass { JFrame frame; FlowLayoutClass() { frame = new JFrame('FlowLayout Example'); //create button components JButton b1 = new JButton('A'); JButton b2 = new JButton('B'); JButton b3 = new JButton('C'); JButton b4 = new JButton('D'); JButton b5 = new JButton('E'); //add components to the frame frame.add(b1); frame.add(b2); frame.add(b3); frame.add(b4); frame.add(b5); //set layout as 'FlowLayout.CENTER' frame.setLayout(new FlowLayout(FlowLayout.CENTER)); //setting flow layout of right alignment frame.setSize(300, 300); frame.setVisible(true); } } public class Main{ public static void main(String() args) { new FlowLayoutClass(); } }
Výkon:
GridLayout v Jave
Pomocou GridLayout môžeme komponenty rozložiť obdĺžnikovým spôsobom, t.j. každá zložka je usporiadaná do každého obdĺžnika.
Konštruktéri triedy GridLayout
- GridLayout (): predvolený konštruktor, ktorý generuje rozloženie mriežky s jedným stĺpcom na jeden komponent v rade.
- GridLayout (int riadky, int stĺpce): Tento konštruktor generuje rozloženie mriežky so zadanými riadkami a stĺpcami. Medzi komponentmi nie je medzera.
- GridLayout (int riadky, int stĺpce, int hgap, int vgap): Pomocou tohto konštruktora, generujeme rozloženie mriežky so zadanými riadkami a stĺpcami a horizontálnymi a vertikálnymi medzerami.
Nasledujúci príklad implementuje GridLayout v Jave.
import javax.swing.*; import java.awt.*; class GridLayoutClass { JFrame frame; GridLayoutClass() { frame=new JFrame('GridLayout Example'); //create components to be laid out as per GridLayout JButton b1=new JButton('P'); JButton b2=new JButton('Q'); JButton b3=new JButton('R'); JButton b4=new JButton('S'); JButton b5=new JButton('T'); JButton b6=new JButton('U'); JButton b7=new JButton('V'); JButton b8=new JButton('W'); JButton b9=new JButton('X'); //add components to the frame frame.add(b1);frame.add(b2);frame.add(b3);frame.add(b4);frame.add(b5); frame.add(b6);frame.add(b7);frame.add(b8);frame.add(b9); //set frame layout to GridLayout of 3 rows and 3 columns frame.setLayout(new GridLayout(3,3)); frame.setSize(300,300); frame.setVisible(true); } } public class Main{ public static void main(String() args) { new GridLayoutClass(); } }
Výkon:
Stanovené hranice v Jave
Ak skontrolujeme príklady programovania v tomto tutoriále pred témou rozloženia, môžeme vidieť, že sme v týchto príkladoch nastavili rozloženie na null (setLayout (null)). Videli sme, že keď v našom programe používame manažérov rozloženia, automaticky umiestňujú komponenty.
Ak sa správcovia rozloženia nepoužívajú, môžeme použiť metódu setBounds na veľkosť a polohu komponentu. Takže metóda setBounds sa používa na manuálne umiestnenie komponentu a tiež na nastavenie veľkosti.
Všeobecná syntax metódy setBounds je nasledovná:
setBounds (int x-coordinate, int y - coordinate, int width, int height)
Poďme si teraz implementovať príklad metódy SetBounds.
import javax.swing.*; public class Main { public static void main(String arg()) { JFrame frame = new JFrame('SetBounds Method Test'); frame.setSize(375, 250); // Set layout as null frame.setLayout(null); // Create a Button JButton button = new JButton('ButtonWithSetBounds'); // Set position and size of a button using setBounds button.setBounds(80,30,200,40); frame.add(button); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); frame.setVisible(true); } }
Výkon:
najlepší sťahovač mp3 pre Android bez reklám
Vo vyššie uvedenom programe máme komponent Button. Nenastavili sme žiadne rozloženie, ale na nastavenie jeho polohy a rozmerov sme použili metódu setBounds.
Swing Vs JavaFX
Hojdačka | JavaFX |
---|---|
Swing poskytuje API na vytváranie komponentov GUI. | JavaFX poskytuje skripty a rýchly vývoj používateľského rozhrania spojené s programom na tvorbu obrazoviek. |
V budúcich verziách nebude do Swingu pridaná žiadna nová funkcionalita. | JavaFX poskytuje bohaté funkcie a má potenciál pre ďalšie funkcie v budúcich verziách. |
Všetky štandardné komponenty môžeme vytvoriť pomocou Swing API. | JavaFX nám umožňuje vytvárať bohaté komponenty grafického používateľského rozhrania pomocou pokročilého vzhľadu a ovládania. |
V aplikácii Swing je prítomné veľké množstvo komponentov. | JavaFX má porovnateľne menší počet komponentov. |
Swing je plne funkčná knižnica používateľského rozhrania. | JavaFX je nové a prichádzajúce API s bohatými komponentmi používateľského rozhrania. |
Swing má voľnú podporu MVC. | JavaFX podporuje vzor MVC dôsledne. |
často kladené otázky
Otázka 1) Je Swing stále používaný v Jave?
Odpoveď: Áno, Swing sa v Jave stále používa a to príliš. Niekedy sa používa ako úplná náhrada za AWT. Niekedy sa používa aj spolu s niektorými komponentmi AWT. Používa sa dokonca s najnovšími JavaFX. Swing sa teda stále používa a bude sa používať ešte dlho.
Otázka 2) Ako funguje Java Swing?
Odpoveď: Swing v Jave je napísaný nad rámec AWT. Riešenie udalostí AWT je teda úplne zdedené swingom. Swing tiež poskytuje veľké množstvo komponentov, ktoré môžeme použiť na vývoj efektívnych aplikácií GUI.
Otázka č. 3) Sleduje spoločnosť Swing MVC?
Odpoveď: Swing API má voľnú podporu MVC. Model predstavuje údaje komponentu. Swing komponent má samostatný prvok s názvom Model, zatiaľ čo Controller a View sú združené v prvkoch používateľského rozhrania. Táto palica umožňuje, aby mala hojdačka zásuvný vzhľad a dojem.
Otázka č. 4) Je JavaFX lepší ako Swing?
Odpoveď: Swing existuje už dlho a má zrelšiu podporu IDE. Mal tiež veľmi veľkú knižnicu komponentov. JavaFX je porovnateľne novší a má malú knižnicu komponentov, ale s dôslednejšími aktualizáciami a stálou podporou MVC. Závisí to teda od toho, ako sa JavaFX vyvíja ďalej a poskytuje viac funkcií.
Otázka č. 5) Čo je lepšie AWT alebo Swing?
Odpoveď: Swing je postavený na AWT a poskytuje bohatú a veľkú sadu UI komponentov v porovnaní s AWT. Swing komponenty tiež môžu mať svoj vzhľad a dojem oproti komponentom AWT, ktoré vyzerajú a vyzerajú ako operačný systém.
Swing komponenty sú rýchlejšie ako AWT. Všetky tieto faktory robia švih lepším ako AWT.
Viac informácií o Java Swing
Pri vytváraní aplikácie by ste spočiatku mali mať základný kontajner a do kontajnera musíte pridať požadované komponenty, ako sú tlačidlá a textové polia.
A keď kliknete na ľubovoľné pole alebo na ňom vykonáte akúkoľvek operáciu, dôjde k udalosti a váš kód by mal udalosti počúvať a tiež s nimi manipulovať.
Kontajner na hojdačku
Kontajner je koreňovým prvkom aplikácie. Všetky ostatné komponenty sú pridané do tohto koreňa a vytvára hierarchiu.
Existujú tri triedy kontajnerov:
- JFrame
- JDialog
- JApplet
Ukážka kontajnera pomocou JFrame:
import java.awt.Color; import javax.swing.JFrame; import javax.swing.JPanel; public class ContainerDemo { public static void main(String() args) { JFrame baseFrame =new JFrame(); baseFrame.setTitle('Base Container'); JPanel contentPane=new JPanel(); contentPane.setBackground(Color.pink); baseFrame.setSize(400, 400); baseFrame.add(contentPane); baseFrame.setDefaultCloseOperation(baseFrame.EXIT_ON_CL OSE); baseFrame.setVisible(true); } }
Keď spustíte vyššie uvedený program, získate výstup nižšie.
Komponenty
Trieda JComponent je základnou triedou pre všetky komponenty v hojdačke.
Medzi často používané komponenty patria,
- JButton
- JTextField
- JTextArea
- JRadioButton
- JComboBox atď.
Ak nie, všetky tieto komponenty by sa mali pridať do kontajnera, v aplikácii sa nezobrazí.
Príklad:
Ak chcete vytvoriť inštanciu tlačidla,
JButton clickButton = nový JButton ();
Ak chcete pridať tlačidlo do kontajnera,
myFrame.add ();
Spracovanie udalostí
Všetky aplikácie sú riadené udalosťami, ako sú kliknutia na tlačidlá, kliknutia myšou, zadávanie textu používateľom atď. Keď dôjde k udalosti, musíte pridať poslucháča a musíte odovzdať objekt zdrojovej udalosti.
S vnútornou triedou môžete udalosť zvládnuť pomocou svojej logiky, ako je uvedené nižšie.
public class ContainerDemo { public void createApp() { JFrame baseFrame =new JFrame(); JPanel contentPane=new JPanel(); baseFrame.setTitle('Base Container'); baseFrame.setSize(400, 400); baseFrame.add(contentPane); JButton demoButton =new JButton('click'); demoButton.setBounds(100,95,95,30); JTextArea result =new JTextArea(); result.setBounds(130,140,95,30); contentPane.add(demoButton); contentPane.add(result); baseFrame.setDefaultCloseOperation(baseFrame.EXIT_ON_CL OSE); baseFrame.setVisible(true); demoButton.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { result.setText('button clicked'); } }); } public static void main(String() args) { ContainerDemo c =new ContainerDemo(); c.createApp(); } }
Záver
V tomto tutoriáli sme sa dotkli základne s Swing API poskytovaným Java na vytváranie aplikácií GUI. Diskutovali sme o hlavných otočných kontajneroch a komponentoch a ich implementácii.
Diskutovali sme tiež o riešení udalostí vo Swingu. Aj keď je mechanizmus spracovania udalostí AWT, swing implementuje udalosti efektívnym spôsobom. Potom sme diskutovali o rôznych manažéroch rozloženia poskytovaných Swing API, ktoré nám umožňujú rozloženie alebo usporiadanie rôznych komponentov v aplikáciách Swing GUI.
=> Vyskúšajte tu Sprievodcu dokonalým školením Java.
Odporúčané čítanie
- Výukový program Java Reflection s príkladmi
- Výukový program JAVA pre začiatočníkov: viac ako 100 praktických výučbových programov Java Video
- Výukový program Java Collections Framework (JCF)
- Modifikátory prístupu v prostredí Java - návod s príkladmi
- Výukový program Java String s programom String Buffer a String Builder
- Úvod do programovacieho jazyka Java - videonávod