java swing tutorial container
Ta izčrpna video vadnica Java Swing razlaga različne sestavne dele GUI Swing Framework in s tem povezane koncepte, kot so JPanel, JFrame, JButton itd.:
Za izdelavo aplikacij z vizualnim vmesnikom uporabljamo grafične uporabniške vmesnike (običajno imenovane GUI), tako da uporabniku olajšamo uporabo aplikacije.
Z vizualnim vmesnikom za aplikacijo je aplikacija enostavnejša za krmarjenje, učinkovitejša uporaba kontrol in je vizualno privlačna za uporabnika.
Swing se v glavnem uporablja za ustvarjanje GUI za aplikacije.
=> Obiščite tukaj, da si ogledate serijo Java Training for All.
Kaj se boste naučili:
- Video vadnica o Java Swingu
- Kaj je Java Swing
- Java Swing Components
- Swing tečaji v Javi
- Swing proti JavaFX
- Zaključek
Video vadnica o Java Swingu
Kaj je Java Swing
Java ponuja številne okvire GUI, ki nam pomagajo pri razvoju različnih aplikacij GUI. Enega smo videli v prejšnji vadnici, tj. Abstract Window Toolkit ali AWT. AWT je eden najstarejših okvirov GUI v Javi in je odvisen tudi od platforme. Druga pomanjkljivost AWT so težke komponente.
V tej vadnici bomo obravnavali še en okvir GUI v Javi, tj. 'SWING'. Okvir Swing v Javi je del Java Foundation Classes ali splošno imenovanih JFC. JFC je API, ki je podoben MFC-jem (Microsoft Foundation Classes) v jeziku C ++. JFC vsebuje Swing, AWT in Java2D.
Okvir Swing v Javi je zgrajen na vrhu okvira AWT in se lahko uporablja za ustvarjanje aplikacij GUI, tako kot AWT. Toda za razliko od AWT so komponente Swing majhne in neodvisne od platforme.
Swing framework je v celoti napisan v Javi. Okvir Swing v Javi je na voljo v paketu 'javax.swing'. Predavanja v paketu javax.swing se začnejo s črko „J“. V paketu javax.swing bomo imeli razrede, kot so JButton, JFrame, JTextField, JTextArea itd.
Na splošno ima Swing API vsak nadzor, definiran v paketu javax.swing, ki je prisoten v AWT. Tako swing na nek način deluje kot nadomestek AWT. Swing ima tudi različna podokna z zavihki za napredne komponente. Swing API v Javi prilagaja arhitekturo MVC (Model View Controller).
Glavne značilnosti te arhitekture so:
- Podatki nihajne komponente so predstavljeni z uporabo modela.
- Vizualno je predstavljen s pomočjo pogleda.
- Komponenta krmilnika v arhitekturi MVC v pogledu bere vhodne podatke uporabnika, nato pa se te spremembe posredujejo podatkom komponente.
- V vsaki komponenti Swing sta pogled in krmilnik združena, model pa je ločen. To daje swingu vtično funkcijo videza in občutka.
Funkcije swing API-ja so povzete spodaj.
- Swing komponente niso odvisne od platforme.
- API je razširljiv.
- Nihajni deli so majhni. Swing komponente so napisane v čisti Javi, komponente pa se upodabljajo s kodo Java namesto osnovnih sistemskih klicev.
- Swing API ponuja nabor naprednih kontrolnikov, kot so TabbedPane, Tree, Colorpicker, kontrolniki tabel itd., Ki so bogati s funkcionalnostjo.
- Krmiljenje nihanja je zelo prilagodljivo. To je zato, ker je videz ali videz komponente neodvisen od notranje predstavitve, zato ga lahko prilagodimo tako, kot želimo.
- Enostavno lahko spremenimo vrednosti in tako spremenimo videz in občutek med izvajanjem.
Java Swing Components
Swing ima širok nabor komponent, ki jih lahko vključimo v naše programe in izkoristimo bogate funkcionalnosti, s katerimi lahko razvijemo zelo prilagojene in učinkovite GUI aplikacije.
Kaj je torej komponenta?
Komponento lahko definiramo kot kontrolnik, ki ga lahko vizualno predstavimo in je običajno neodvisen. Ima določeno funkcionalnost in je v Swing API-ju predstavljen kot posamezen razred.
Na primer, class JButton in swing API je komponenta gumba in zagotavlja funkcionalnost gumba.
Ena ali več komponent tvori skupino in to skupino je mogoče postaviti v 'vsebnik'. Posoda zagotavlja prostor, v katerem lahko prikažemo komponente in upravljamo tudi njihov razmik, postavitev itd.
V Javi so vsebniki razdeljeni na dve vrsti, kot je prikazano spodaj:
Swing tečaji v Javi
Spodaj je prikazana hierarhija Swing API v Javi:
Kot je razvidno iz zgornje hierarhije, imamo razrede Container - frame, dialog, Panel, Applet itd. Obstajajo tudi razredi Component, ki izhajajo iz razreda JComponent Swing API-ja. Nekateri razredi, ki podedujejo od JComponent, so JLabel, JList, JTextBox itd.
Nekateri pomembni razredi Swing API so naslednji:
- JWindow: Razred JWindow Swing podeduje razred Window neposredno. Razred JWindow kot privzeto postavitev uporablja „BorderLayout“.
- JPanel: JPanel je potomec razreda JComponent in je v podobnih vrsticah kot plošča razreda AWT in ima privzeto postavitev »FlowLayout«.
- JFrame: JFrame izvira iz razreda Frame. Komponente, dodane v okvir, se imenujejo vsebina okvira.
- JLabel: Razred JLabel je podrazred komponente JComponent. Uporablja se za ustvarjanje besedilnih nalepk v aplikaciji.
- JButton: Funkcijo tipk v Swingu zagotavlja JButton. Z objektom JButton lahko povežemo niz, ikono ali oboje.
- JTextField: Razred JTextField ponuja besedilno polje, v katerem lahko uredimo eno vrstico besedila.
JFrame v Javi
Okvir je na splošno vsebnik, ki lahko vsebuje druge komponente, kot so gumbi, nalepke, besedilna polja itd. Okno okvirja lahko vsebuje naslov, obrobo in tudi menije, besedilna polja, gumbe in druge komponente. Aplikacija mora vsebovati okvir, da lahko vanj dodajamo komponente.
Okvir v Java Swing je definiran v razredu javax.swing.JFrame. Razred JFrame podeduje razred java.awt.Frame. JFrame je kot glavno okno aplikacije GUI z uporabo swinga.
Okenski objekt JFrame lahko ustvarimo z dvema pristopoma:
kako uporabljati thread.sleep v javi
# 1) S podaljšanjem razreda JFrame
Prvi pristop je ustvarjanje novega razreda za izdelavo okvira. Ta razred podeduje iz razreda JFrame paketa javax.swing.
Naslednji program izvaja ta pristop.
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 } }
Izhod:
# 2) S posnemanjem razreda 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 } }
Izhod:
V zgornjem programu smo ustvarili okvir iz razreda JFrame z ustvarjanjem primerka razreda JFrame.
JPanel v Javi
Plošča je komponenta, ki je v oknu okvirja. Okvir ima lahko več komponent ene plošče, pri čemer ima vsaka komponenta plošče več drugih komponent.
Poenostavljeno lahko uporabimo plošče za razdelitev okvirja. Vsaka plošča v sebi združi več drugih komponent. Z drugimi besedami, s ploščami organiziramo komponente znotraj okvirja.
Razred API-ja swing, ki implementira komponento plošče, je JPanel. Razred JPanel podeduje od JComponenta in ima za privzeto postavitev FlowLayout.
Naslednji program prikazuje izdelavo vsebnika plošče v okviru z uporabo razredov paketov 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 } }
Izhod:
Tu imamo okvir. Znotraj okvirja ustvarimo ploščo. Nato znotraj plošče ustvarimo gumb. Na ta način lahko s ploščo držimo ostale komponente.
JTextArea v Javi
TextArea definira besedilno polje, ki ga je mogoče urejati. Lahko ima več vrstic. Nihajni razred, ki definira območje besedila, je JTextArea in podeduje razred JTextComponent.
javni razred JTextArea razširja JTextComponent
Razred JTextArea vsebuje 4 konstruktorje, ki nam omogočajo ustvarjanje besedilnega območja z različnimi možnostmi.
- JTextArea (): Privzeti konstruktor. Ustvarite prazno besedilno območje.
- JTextArea (nizi): Ustvari besedilno območje s s kot privzeto vrednostjo.
- JTextArea (int vrstica, int stolpec): Ustvari besedilno območje z določeno vrstico x stolpec.
- JTextArea (String s, int vrstica, int stolpec): Ustvari besedilo are2a z določeno vrstico x stolpec in privzetimi vrednostmi s.
Naslednji program Java prikazuje primer komponente JTextArea v zamahu.
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 } }
Izhod:
JButton v Javi
Gumb je komponenta, ki se uporablja za ustvarjanje gumba z imenom ali oznako. V swingu je razred, ki ustvari označen gumb, JButton. JButton podeduje razred AbstractButton. Dogodek ActionListener lahko povežemo z gumbom, da bo ob pritisku nekaj ukrepal.
Uvedimo primer programa za JButton v Java swings.
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); } }
Izhod:
JList v Javi
Seznam je sestavljen iz več besedil. Uporabniki lahko naenkrat izberejo en ali več elementov. Razred, ki izvaja seznam v swing API-ju, je JList. JList je potomec razreda JComponent.
Spodaj so navedeni konstruktorji razreda JList.
- JList (): Privzeti konstruktor, ki ustvari prazen seznam samo za branje.
- JList (array () listItem): Ustvarite seznam JList, ki prvotno vsebuje elemente polja listItem.
- JList (ListModel dataModel): Ustvari seznam z elementi iz podanega modela dataModel.
Preprost prikaz komponente JList je podan spodaj.
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); } }
Izhod:
V zgornjem programu najprej definiramo listModel z barvnimi vnosi v njem. Nato ustvarimo objekt JList in mu dodamo listModel. Nato se objekt JList doda k okvirnemu objektu, ki se nato prikaže.
JComboBox v Javi
Razred JCombobox prikazuje seznam možnosti, med katerimi lahko uporabnik izbere možnost. Izbrana izbira je na vrhu. JComboBox izhaja iz razreda JComponent.
izbor razvrsti v c ++
Sledijo konstruktorji, ki jih ponuja razred JComboBox:
- JComboBox (): Privzeti konstruktor, ki ustvari ComboBox s privzetim podatkovnim modelom.
- JComboBox (predmet ():): Ta konstruktor ustvari ComboBox, ki vsebuje elemente kot elemente danih elementov matrike.
- JComboBox (vektorski elementi): Ta konstruktor bere elemente danega vektorja in sestavi ComboBox s temi elementi kot svojimi elementi.
Razred JComboBox ponuja tudi metode za dodajanje / odstranjevanje elementov, dodajanje ActionListener, ItemListener itd.
Naslednji primer prikazuje implementacijo JComboBox v Javi.
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(); } }
Izhod:
JSlider v Javi
Drsnik nam omogoča, da izberemo določen obseg vrednosti. V Java Swing API je JSlider razred, ki se uporablja za izvedbo drsnika.
Sledijo konstruktorji, ki jih ponuja razred JSlider.
- JSlider (): Privzeti konstruktor, ki ustvari drsnik, ki ima za začetno vrednost 50 in obseg 0-100.
- JSlider (int usmeritev): Ta konstruktor ustvari drsnik, tako kot zgoraj, vendar z določeno usmeritvijo. Vrednost orientacije je lahko JSlider.HORIZONTAL ali JSlider.VERTICAL.
- JSlider (int min, int max): Ta konstruktor se uporablja za ustvarjanje vodoravnega drsnika z uporabo danih min in max.
- JSlider (int min, int max, int value): Ta konstruktor ustvari drsnik, ki je vodoraven z določeno vrednostjo min, max in value.
- JSlider (int orientacija, int min, int max, int vrednost): Ta konstruktor izdela drsnik z določeno orientacijo, min, max in vrednostjo.
Naslednji program prikazuje JSlider v Javi s kljukicami. Ta program prikazuje tudi uporabo metod, ki jih podpira razred 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); } }
Izhod:
Obravnava dogodkov v Javi
Dogodek lahko definiramo kot spremembo stanja predmeta. Z vidika GUI se dogodek zgodi, ko končni uporabnik komunicira s komponentami GUI. Dogodki, ki se sprožijo v grafičnem uporabniškem vmesniku, so lahko klik gumba, pomikanje, izbira elementov seznama, spreminjanje besedila itd.
Dogodki, ki se zgodijo v zgoraj naštetem GUI, so večinoma dogodki v ospredju. Lahko imamo tudi nekaj dogodkov v ozadju, kot so zaključek operacije v ozadju, iztek časovnika itd.
Obravnava dogodkov je mehanizem, s pomočjo katerega se izvede ukrep, ko se dogodek zgodi. Za to določimo metodo, ki se imenuje tudi obdelovalec dogodkov, ki se pokliče, ko se dogodek zgodi. Java uporablja standardni mehanizem, imenovan 'Model dogodka delegiranja', da ustvarja in obravnava dogodke.
Model dogodka delegacije sestavljajo:
# 1) Vir: Vir dogodka je predmet. Predmet, na katerem se dogodek zgodi, je vir in vir je odgovoren za pošiljanje informacij o dogodku vodniku dogodkov.
# 2) Poslušalec: Poslušalec ni nič drugega kot obdelovalec dogodkov, ki je odgovoren za dejanje ob dogodku. V Javi je poslušalec objekt, ki čaka na dogodek. Ko se dogodek zgodi, poslušalec dogodek obdela.
Zahteva je, da poslušalca registrirate s predmetom, tako da ga lahko ob dogodku poslušalec obdela.
Na primer,za dogodek klika gumba imamo lahko naslednje zaporedje korakov.
- Uporabnik klikne gumb, ki ustvari dogodek Klik.
- Ustvari se ustrezen objekt razreda dogodka in temu predmetu se posredujejo izvorni in dogodkovni podatki.
- Ta predmet dogodka se nato posreduje v razred poslušalca, registriran z objektom.
- Poslušalec izvrši in se vrne.
Zdaj pa se pogovorimo o nekaterih poslušalcih, ki jih ponuja Java.
ActionListener v Javi
ActionListener je poslušalec gumba ali elementa menija. Ko kliknemo na gumb, je vključen poslušalec gumba actionListener. ActionListener je obveščen v ActionEvent.
Paket dogodkov java.awt.an definira vmesnik ActionListener. Ta vmesnik ima samo eno metodo actionPerformed ().
javni povzetek void actionPerformed (ActionEvent e);
Ko kliknete registrirano komponento, kot je gumb, se samodejno prikliče metoda actionPerformed ().
Najpogostejši pristop za vključitev ActionListenerja v program je izvedba vmesnika ActionListener in nato izvedba metode actionPerformed ().
Koraki za izvajanje razreda ActionListener so naslednji:
# 1) Implementirajte vmesnik ActionListerner.
javni razred ActionListenerImpl Implementira ActionListener
# 2) Registrirajte komponento s tem poslušalcem. Če je gumb komponenta, ki jo želimo registrirati s poslušalcem, jo bomo registrirali na naslednji način:
button.addActionListener (instanceOfListenerclass);
# 3) Implementirajte / preglasite metodo actionPerformed ().
public void actionPerformed (ActionEvent e){ //code to perform action }
Tako lahko z zgornjimi koraki kateri koli dogodek povežemo s komponento GUI.
Naslednji primer prikazuje dogodek klika z gumbom 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); } }
Izhod:
Zgornji program izvaja dogodek ActionListener. Dogodek je dogodek z gumbom in z njim smo povezali ActionListener, ki ob kliku gumba prikaže besedilo v besedilnem polju.
KeyListener v Javi
Kadar se stanje ključa spremeni, se o tem obvesti KeyListener. Tako kot ActionListener je tudi KeyListener v paketu java.awt.event.
Vmesnik KeyListener ponuja naslednje metode:
javni povzetek void keyPress (KeyEvent e);
javni povzetek void keyReleased (KeyEvent e);
javni povzetek void keyTyped (KeyEvent e);
Zgornje metode moramo uporabiti za povezovanje ključnih dogodkov s komponento. Uporabniku prepustimo izvedbo primera KeyListener z uporabo swingov v Javi.
Nihajne postavitve v Javi
Ko v posodo razporedimo različne sestavne dele, rečemo, da jih razporedimo. Tako lahko postavitev definiramo kot pozicioniranje komponent v vsebniku.
Dokler je manj komponent, jih lahko ročno povlečete tako, da jih povlečete. Vendar je težko razporediti tako velike sestavne dele. V tem trenutku nam na pomoč priskoči Layout Manager Java.
LayoutManager je odgovoren za postavitev komponent v programih GUI. LayoutManager je vmesnik in ga izvajajo vsi razredi upravitelja postavitve. Java ponuja naslednje razrede LayoutManager.
LayoutManager | Opis |
---|---|
javax.swing.GroupLayout | Komponente združi v skupine in jih nato postavi v posodo. |
java.awt.BorderLayout | Komponente so razporejene tako, da se prilegajo v pet smeri, in sicer v sredino, vzhod, zahod, jug, sever. |
java.awt.FlowLayout | To je privzeta postavitev. Polaga komponente v usmerjeni tok. |
java.awt.GridLayout | Komponente razporedi v pravokotno mrežo. |
javax.swing.BoxLayout | Komponente so razporejene v škatli. |
java.awt.CardLayout | Vsaka komponenta se gleda kot karta v krovu in je naenkrat vidna samo ena komponenta. |
java.awt.GridBagLayout | Komponente razporedi navpično, vodoravno ali celo vzdolž temeljnih črt. Ni treba, da so sestavni deli enake velikosti. |
javax.swing.ScrollPaneLayout | Uporablja ga razred JScrollPane in je odgovoren za razporeditev komponent v pomičnih vsebnikih. |
javax.swing.SpringLayout itd. | Zagotovljen je niz omejitev, kot sta vodoravna in navpična razdalja med komponentami itd., Komponente pa so razporejene v skladu s tem nizom omejitev. |
V tej vadnici bomo obravnavali samo FlowLayout in GridLayout.
FlowLayout v Javi
FlowLayout razporedi komponente v smeri toka, eno za drugo. To je privzeta postavitev za vsebnike, kot sta Panel in Applet.
Razred FlowLayout v Javi, ki predstavlja upravitelja FlowLayout, vsebuje naslednja polja in konstruktorje.
Polja razreda FlowLayout
- javni statični končni int VODENJE
- javni statični končni int PRIPRAVA
- javni statični končni int LEVO
- javni statični končni int DESNO
- javni statični končni int CENTER
Zgornja polja določajo položaje, na katere bodo komponente postavljene ali poravnane.
Konstruktorji razreda FlowLayout
- FlowLayout (): To je privzeti konstruktor. Ta konstruktor ustvari postavitev toka s centralno poravnanimi komponentami s privzeto vrzeljo 5 enot v vodoravni in navpični smeri.
- FlowLayout (int align): Ta konstruktor ustvari postavitev toka z določeno vrednostjo poravnave in z vodoravno in navpično režo 5 enot.
- FlowLayout (int align, int hgap, int vgap): Ustvari postavitev toka z določeno vrednostjo poravnave ter vodoravno in navpično režo.
Spodaj je primer FlowLayout v Javi.
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(); } }
Izhod:
GridLayout v Javi
Z uporabo GridLayout lahko sestavimo komponente v obliki pravokotne mreže, tj. Vsaka komponenta je razporejena v vsakem pravokotniku.
Konstruktorji razreda GridLayout
- GridLayout (): privzeti konstruktor, ki generira postavitev mreže z enim stolpcem na eno komponento v vrstici.
- GridLayout (int vrstice, int stolpci): Ta konstruktor ustvari postavitev mreže z navedenimi vrsticami in stolpci. Med komponentami ni vrzeli.
- GridLayout (int vrstice, int stolpci, int hgap, int vgap): Z uporabo tega konstruktorja, ustvarimo mrežno postavitev z določenimi vrsticami in stolpci ter vodoravnimi in navpičnimi vrzelmi.
Naslednji primer implementira GridLayout v Javi.
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(); } }
Izhod:
Nastavitve v Javi
Če pred tem o postavitvi preverimo primere programiranja v tej vadnici, lahko vidimo, da smo v teh primerih postavili postavitev kot nulo (setLayout (null)). Videli smo, da ko v našem programu uporabljamo upravitelje postavitev, ti samodejno postavijo komponente.
Kadar upravitelje postavitev ne uporabljamo, lahko metodo setBounds uporabimo glede na velikost in položaj komponente. Tako se metoda setBounds uporablja za ročno pozicioniranje komponente in tudi za nastavitev velikosti.
Splošna sintaksa metode setBounds je naslednja:
setBounds (int x-координата, int y - koordinata, int širina, int višina)
Zdaj izvedimo primer metode 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); } }
Izhod:
sql poizvedbe za prakso z odgovori pdf
V zgornjem programu imamo komponento Button. Nismo nastavili nobene postavitve, vendar smo uporabili metodo setBounds za nastavitev njenega položaja in dimenzij.
Swing proti JavaFX
Gugalnica | JavaFX |
---|---|
Swing ponuja API za ustvarjanje komponent GUI. | JavaFX ponuja skripte in hiter razvoj uporabniškega vmesnika, povezanega z graditeljem zaslona. |
V prihodnjih različicah Swingu ne bo dodana nova funkcionalnost. | JavaFX ponuja bogato funkcionalnost in potencial za več funkcij v prihodnjih različicah. |
Z uporabo Swing API lahko ustvarimo vse standardne komponente. | JavaFX nam omogoča ustvarjanje bogatih komponent GUI z uporabo naprednega videza in občutka. |
V Swingu je prisotno veliko število komponent. | JavaFX ima razmeroma manjše število komponent. |
Swing je popolnoma funkcionalna knjižnica uporabniškega vmesnika. | JavaFX je nov in prihajajoči API z bogatimi komponentami uporabniškega vmesnika. |
Swing ima ohlapno podporo MVC. | JavaFX dosledno podpira vzorec MVC. |
Pogosto zastavljena vprašanja
V # 1) Ali se Swing še vedno uporablja v Javi?
Odgovor: Da, Swing se še vedno uporablja v Javi, in to preveč. Včasih se uporablja kot popolna zamenjava za AWT. Včasih se uporablja tudi skupaj z nekaterimi komponentami AWT. Uporablja se celo z najnovejšim JavaFX. Swing se torej še vedno uporablja in se bo uporabljal še dolgo.
V # 2) Kako deluje Java Swing?
Odgovor: Swing v Javi je napisan na vrhu okvira AWT. Torej ravnanje z dogodki AWT podedujemo tako, da v celoti zamahnemo. Swing ponuja tudi veliko število komponent, ki jih lahko uporabimo za razvoj učinkovitih aplikacij GUI.
V # 3) Ali Swing sledi MVC?
Odgovor: Swing API ima ohlapno podporo MVC. Model predstavlja podatke komponente. Swing komponenta ima ločen element, imenovan Model, medtem ko sta Controller in View združena v elemente uporabniškega vmesnika. Ta klabiranje omogoča, da ima gugalnica vtični videz in občutek.
V # 4) Ali je JavaFX boljši od Swinga?
Odgovor: Swing obstaja že dolgo časa in ima bolj zrelo podporo IDE. Prav tako je imel zelo veliko knjižnico komponent. JavaFX je razmeroma novejši in ima majhno knjižnico komponent, vendar z bolj doslednimi posodobitvami in dosledno podporo MVC. Tako je odvisno od nadaljnjega razvoja JavaFX in zagotavlja več funkcij.
V # 5) Kateri je boljši AWT ali Swing?
Odgovor: Swing je zgrajen na vrhu AWT in ponuja bogat in velik nabor komponent uporabniškega vmesnika v primerjavi z AWT. Nihajne komponente imajo lahko tudi svoj videz in občutek kot komponente AWT, ki imajo videz in občutek operacijskega sistema.
Swing komponente so hitrejše od AWT. Vsi ti dejavniki omogočajo nihanje boljše kot AWT.
Več o Java Swingu
Ko ustvarite aplikacijo, morate sprva imeti osnovni vsebnik in v vsebnik morate dodati zahtevane komponente, kot so gumbi in besedilna polja.
In ko kliknete ali izvedete katero koli operacijo na katerem koli polju, se dogodek zgodi in vaša koda mora poslušati dogodke in jih tudi obravnavati.
Nihajni zabojnik
Vsebnik je korenski element aplikacije. Vse druge komponente so dodane temu korenu in tvori hierarhijo.
Obstajajo trije razredi vsebnikov:
- JFrame
- JDialog
- JApplet
Demo posode z uporabo 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); } }
Ko zaženete zgornji program, boste dobili spodnji izhod.
Komponente
Razred JComponent je osnovni razred za vse komponente v nihanju.
Pogosto uporabljene komponente vključujejo,
- JButton
- JTextField
- JTextArea
- JRadioButton
- JComboBox itd.
Vse te komponente je treba dodati v vsebnik, če ne, se ne bodo pojavile v aplikaciji.
Primer:
Če želite ustvariti primerek gumba,
JButton clickButton = nov JButton ();
Če želite gumb dodati v vsebnik,
myFrame.add ();
Obravnava dogodkov
Vse aplikacije poganjajo dogodki, kot so kliki gumbov, kliki miške, vnos besedila uporabnika itd. Ko se dogodek zgodi, morate dodati poslušalca in poslati izvorni objekt dogodka.
Z notranjim razredom lahko dogodek obravnavate s svojo logiko, kot je prikazano spodaj.
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(); } }
Zaključek
V tej vadnici smo se dotaknili Swing API-ja, ki ga ponuja Java za izdelavo aplikacij GUI. Razpravljali smo o glavnih nihajnih posodah in komponentah ter njihovi izvedbi.
Prav tako smo razpravljali o ravnanju z dogodki v Swingu. Čeprav je mehanizem za obdelavo dogodkov AWT, swing dogodke izvaja učinkovito. Nato smo razpravljali o različnih upraviteljih postavitev, ki jih ponuja Swing API in nam omogočajo postavitev ali razporeditev različnih komponent v aplikacijah Swing GUI.
=> Tukaj si oglejte Perfect Java Training Guide.