java swing tutorial container
Ovaj opsežni video vodič za Java Swing objašnjava razne komponente GUI Swing Framework-a i srodne koncepte kao što su JPanel, JFrame, JButton itd.:
Grafičko korisničko sučelje (obično se naziva GUI) koristimo za izradu aplikacija koje imaju vizualno sučelje olakšavajući korisniku upotrebu aplikacije.
Imajući vizualno sučelje za aplikaciju čini aplikaciju jednostavnom za navigaciju, učinkovitiju upotrebu kontrola, a također je vizualno privlačna korisniku.
Swing se uglavnom koristi za stvaranje GUI-ja za aplikacije.
=> Posjetite ovdje da biste vidjeli seriju Java treninga za sve.
Što ćete naučiti:
- Video vodič za Java Swing
- Što je Java Swing
- Java Swing komponente
- Swing tečajevi na Javi
- Swing protiv JavaFX-a
- Zaključak
Video vodič za Java Swing
Što je Java Swing
Java nudi mnoge GUI okvire koji nam pomažu u razvoju raznih GUI aplikacija. Vidjeli smo jedan u našem prethodnom vodiču, tj. Abstract Window Toolkit ili AWT. AWT je jedan od najstarijih GUI okvira u Javi i također ovisi o platformi. Još jedan nedostatak AWT-a su njegovi teški dijelovi.
U ovom uputstvu razgovarat ćemo o još jednom GUI okviru u Javi, tj. 'SWING'. Swing okvir u Javi dio je Java Foundation Classes ili obično zvanih JFC. JFC je API koji je sličan MFC-ovima (Microsoft Foundation Classes) u C ++. JFC sadrži Swing, AWT i Java2D.
Swing okvir u Javi izgrađen je na vrhu AWT okvira i može se koristiti za stvaranje GUI aplikacija baš kao i AWT. Ali za razliku od AWT-a, Swing komponente su male i neovisne o platformi.
Swing okvir je u potpunosti napisan na Javi. Swing okvir u Javi pruža se putem paketa ‘javax.swing’. Predavanja u paketu javax.swing započinju slovom ‘J’. Tako ćemo u paketu javax.swing imati klase poput JButton, JFrame, JTextField, JTextArea itd.
Općenito, Swing API ima svaku kontrolu definiranu u paketu javax.swing koji je prisutan u AWT-u. Dakle, swing na neki način djeluje kao zamjena za AWT. Također, Swing ima razna okna s karticama s naprednim komponentama. Swing API u Javi prilagođava MVC (Model View Controller) arhitekturu.
Glavne karakteristike ove arhitekture su:
- Podaci swing komponente predstavljeni su pomoću modela.
- Vizualno je predstavljen pomoću pogleda.
- Komponenta kontrolera MVC arhitekture čita ulazne podatke korisnika na prikazu, a zatim se te promjene prosljeđuju podacima komponente.
- U svakoj Swing komponenti, pogled i kontroler su spojeni zajedno, dok je model zaseban. To daje ljuljački mogućnost povezivanja izgleda i osjećaja.
Značajke swing API-a sažete su u nastavku.
- Swing komponente neovisne su o platformi.
- API je proširiv.
- Dijelovi ljuljačke su lagani. Swing komponente napisane su na čistoj Javi, a također se generiraju pomoću Java koda umjesto temeljnih sistemskih poziva.
- Swing API pruža skup naprednih kontrola poput TabbedPane, Tree, Colorpicker, tabličnih kontrola itd. Koje su bogate funkcionalnostima.
- Kontrole ljuljačke vrlo su prilagodljive. To je zato što izgled ili izgled i izgled komponente neovisan je o unutarnjem predstavljanju i stoga ga možemo prilagoditi onako kako želimo.
- Jednostavno možemo promijeniti vrijednosti i tako promijeniti izgled i izgled tijekom izvođenja.
Java Swing komponente
Swing ima velik skup komponenata koje možemo uključiti u svoje programe i iskoristiti bogate funkcionalnosti pomoću kojih možemo razviti visoko prilagođene i učinkovite GUI aplikacije.
Pa, što je komponenta?
Komponenta se može definirati kao kontrola koja se može vizualno predstaviti i obično je neovisna. Ima specifičnu funkcionalnost i predstavljen je kao individualna klasa u Swing API-ju.
Na primjer, klasa JButton u swing API-u komponenta je gumba i pruža funkcionalnost gumba.
Jedna ili više komponenata čine skupinu i ta se skupina može staviti u 'spremnik'. Spremnik pruža prostor u kojem možemo prikazati komponente, a također upravljati njihovim razmakom, rasporedom itd.
U Javi su spremnici podijeljeni u dvije vrste kao što je prikazano u nastavku:
Swing tečajevi na Javi
Hijerarhija Swing API-ja u Javi prikazana je u nastavku:
Kao što se vidi iz gornje hijerarhije, imamo klase spremnika - okvir, dijalog, ploča, aplet, itd. Postoje i klase komponenata izvedene iz klase JComponent Swing API-a. Neke klase koje nasljeđuju JComponent su JLabel, JList, JTextBox itd.
Neke od važnih klasa Swing API-a su sljedeće:
- JWindow: Klasa JWindow Swing izravno nasljeđuje klasu Window. Klasa JWindow koristi 'BorderLayout' kao zadani izgled.
- JPanel: JPanel je potomak klase JComponent i nalazi se na sličnim linijama kao AWT klasa Panel, a zadani izgled ima 'FlowLayout'.
- JFrame: JFrame potječe iz klase Frame. Komponente dodane u Frame nazivaju se sadržajem Frame.
- JLabel: Klasa JLabel je podrazred JComponenta. Koristi se za stvaranje tekstualnih naljepnica u aplikaciji.
- JGumb: Funkcionalnost tipki u Swingu pruža JButton. S objektom JButton možemo povezati niz, ikonu ili oboje.
- JTextField: Klasa JTextField pruža tekstualno polje u kojem možemo uređivati jedan redak teksta.
JFrame u Javi
Okvir je općenito spremnik koji može sadržavati druge komponente poput gumba, naljepnica, tekstualnih polja itd. Prozor okvira može sadržavati naslov, obrub, a također i izbornike, tekstualna polja, gumbe i ostale komponente. Aplikacija treba sadržavati okvir tako da u nju možemo dodavati komponente.
Okvir u Java Swingu definiran je u klasi javax.swing.JFrame. Klasa JFrame nasljeđuje klasu java.awt.Frame. JFrame je poput glavnog prozora GUI aplikacije pomoću swinga.
Objekt prozora JFrame možemo stvoriti pomoću dva pristupa:
otvorite xml datoteku u Excelu
# 1) Proširivanjem klase JFrame
Prvi pristup je stvaranje nove klase za izgradnju okvira. Ova klasa nasljeđuje od klase JFrame paketa javax.swing.
Sljedeći program provodi ovaj pristup.
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 } }
Izlaz:
# 2) Instanciranjem klase 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 } }
Izlaz:
U gornjem programu stvorili smo okvir iz klase JFrame stvaranjem instance klase JFrame.
JPanel u Javi
Panel je komponenta koja se nalazi unutar prozora okvira. Okvir može sadržavati više komponenata jedne ploče unutar sebe, a svaka komponenta ploče ima nekoliko drugih komponenata.
Jednostavnije rečeno, možemo koristiti ploče za pregrađivanje okvira. Svaka ploča unutar sebe grupira nekoliko drugih komponenata. Drugim riječima, mi koristimo ploče za organiziranje komponenata unutar okvira.
Swing API klasa koja implementira komponentu ploče je JPanel. Klasa JPanel nasljeđuje od JComponent i za zadani izgled ima FlowLayout.
Sljedeći program prikazuje stvaranje kontejnera ploče u okviru pomoću klasa paketa 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 } }
Izlaz:
Ovdje imamo Frame. Unutar okvira stvaramo ploču. Zatim unutar ploče stvaramo gumb. Na ovaj način možemo koristiti ploču za držanje ostalih komponenata.
JTextArea u Javi
TextArea definira tekstualno polje koje se može uređivati. Može imati više linija. Klasa swing koja definira područje teksta je JTextArea i nasljeđuje klasu JTextComponent.
JTextArea javne klase proširuje JTextComponent
Klasa JTextArea sadrži 4 konstruktora koji nam omogućuju stvaranje tekstnog područja s raznim opcijama.
- JTextArea (): Zadani konstruktor. Stvorite prazno područje teksta.
- JTextArea (nizovi): Stvara tekstualno područje sa s kao zadanom vrijednošću.
- JTextArea (int redak, int stupac): Stvara područje teksta s navedenim retkom x stupcem.
- JTextArea (niz s, int redak, int stupac): Stvara tekst are2a s navedenim retkom x stupcem i zadanim vrijednostima s.
Sljedeći Java program prikazuje primjer komponente JTextArea u 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 } }
Izlaz:
JButton u Javi
Gumb je komponenta koja se koristi za stvaranje gumba s imenom ili oznakom. U zamahu, klasa koja stvara označeni gumb je JButton. JButton nasljeđuje klasu AbstractButton. Događaj ActionListener možemo povezati s gumbom kako bismo pokrenuli akciju kad se pritisne.
Primijenimo primjer programa za JButton u Java swingsima.
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); } }
Izlaz:
JList u Javi
Popis se sastoji od više tekstualnih stavki. Korisnici mogu odabrati jednu stavku ili više stavki istovremeno. Klasa koja implementira popis u swing API je JList. JList je potomak klase JComponent.
Dolje su dati konstruktori klase JList.
- JList (): Zadani konstruktor koji stvara prazan popis samo za čitanje.
- JList (niz () listItem): Stvorite JList koji u početku sadrži elemente niza listItem.
- JList (ListModel dataModel): Stvara popis s elementima iz navedenog modela dataModel.
Jednostavna demonstracija komponente JList dana je u nastavku.
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); } }
Izlaz:
U gornjem programu prvo definiramo listModel s unosima boja. Zatim kreiramo objekt JList i dodamo mu listModel. Dalje, objekt JList dodaje se okviru objekta koji se zatim prikazuje.
JComboBox u Javi
Klasa JCombobox prikazuje popis izbora iz kojih korisnik može odabrati opciju. Odabrani izbor nalazi se na vrhu. JComboBox potječe iz klase JComponent.
Slijede konstruktori koje pruža klasa JComboBox:
- JComboBox (): Zadani konstruktor koji stvara ComboBox sa zadanim modelom podataka.
- JComboBox (stavke objekta ()): Ovaj konstruktor stvara ComboBox koji ima stavke kao elemente zadanih stavki niza.
- JComboBox (vektorski elementi): Ovaj konstruktor čita elemente zadanog vektora i konstruira ComboBox s tim elementima kao svojim stavkama.
Klasa JComboBox također nudi metode za dodavanje / uklanjanje stavki, dodavanje ActionListener, ItemListener itd.
Sljedeći primjer prikazuje implementaciju JComboBox-a u 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(); } }
Izlaz:
JSlider u Javi
Klizač nam omogućuje odabir određenog raspona vrijednosti. U Java Swing API-ju, JSlider je klasa koja se koristi za implementaciju klizača.
Slijede konstruktori koje pruža klasa JSlider.
- JSlider (): Zadani konstruktor koji stvara klizač koji ima 50 kao početnu vrijednost i raspon 0 -100.
- JSlider (int orijentacija): Ovaj konstruktor stvara klizač baš kao gore, ali s navedenom orijentacijom. Vrijednost orijentacije može biti JSlider.HORIZONTAL ili JSlider.VERTICAL.
- JSlider (int min, int max): Ovaj konstruktor koristi se za stvaranje vodoravnog klizača pomoću zadanih min i max.
- JSlider (int min, int max, int value): Ovaj konstruktor stvara klizač koji je vodoravan s navedenom vrijednošću min, max i value.
- JSlider (int orijentacija, int min, int max, int vrijednost): Ovaj konstruktor izrađuje klizač s navedenom orijentacijom, min, max i vrijednošću.
Sljedeći program demonstrira JSlider u Javi s tikovima. Ovaj program također pokazuje upotrebu metoda koje podržava klasa 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); } }
Izlaz:
Rukovanje događajima u Javi
Događaj se može definirati kao promjena stanja objekta. S gledišta GUI-ja, događaj se događa kada krajnji korisnik stupi u interakciju s komponentama GUI-a. Događaji koji se pokreću u GUI-u mogu biti klik gumba, pomicanje, odabir stavki popisa, promjena teksta itd.
Događaji koji se događaju u gore navedenom GUI-u uglavnom su događaji u prvom planu. Možemo imati i neke pozadinske događaje poput završetka pozadinske operacije, isteka vremena, itd.
Rukovanje događajima je mehanizam kojim se poduzima radnja kada se događaj dogodi. Za to definiramo metodu koja se naziva i rukovateljem događaja koji se poziva kada se događaj dogodi. Java koristi standardni mehanizam koji se naziva „Model događaja delegiranja” za generiranje i obradu događaja.
Model događaja delegacije sastoji se od:
# 1) Izvor: Izvor događaja je objekt. Objekt na kojem se događa događaj je izvor, a izvor je odgovoran za slanje informacija o događaju voditelju događaja.
# 2) Slušatelj: Slušatelj nije ništa drugo nego voditelj događaja odgovoran za poduzimanje radnje kada se događaj dogodi. U Javi je slušatelj objekt koji čeka događaj. Jednom kada se događaj dogodi, slušatelj obrađuje događaj.
Zahtjev je da se slušatelj registrira s objektom tako da ga, kad se dogodi događaj, slušatelj može obraditi.
Na primjer,za događaj klika na gumb možemo imati sljedeći slijed koraka.
- Korisnik klikne gumb koji generira događaj klika.
- Stvara se odgovarajući objekt klase događaja, a izvor i podaci o događaju prenose se u ovaj objekt.
- Ovaj se objekt događaja zatim prosljeđuje klasi slušatelja registriranoj s objektom.
- Slušatelj izvršava i vraća se.
Sada razgovarajmo o nekim slušateljima koje pruža Java.
ActionListener u Javi
ActionListener je slušatelj gumba ili stavke izbornika. Kada kliknemo na gumb, uključen je slušač gumba actionListener. ActionListener je obaviješten u ActionEventu.
Paket događaja java.awt.an definira sučelje ActionListener. Ovo sučelje ima samo jednu metodu actionPerformed ().
javna sažetak void actionPerformed (ActionEvent e);
Kad se klikne registrirana komponenta poput gumba, tada se automatski poziva metoda actionPerformed ().
Najčešći pristup uključivanju ActionListenera u program je implementacija sučelja ActionListener, a zatim primjena metode actionPerformed ().
Koraci za implementaciju klase ActionListener su sljedeći:
# 1) Implementirajte sučelje ActionListerner.
javna klasa ActionListenerImpl Provodi ActionListener
# 2) Registrirajte komponentu kod ovog slušatelja. Ako je gumb komponenta koju želimo registrirati sa slušateljem, tada ćemo je registrirati na sljedeći način:
button.addActionListener (instanceOfListenerclass);
# 3) Primijenite / nadjačajte metodu actionPerformed ().
public void actionPerformed (ActionEvent e){ //code to perform action }
Dakle, koristeći gornje korake, možemo svaki događaj pridružiti komponenti GUI.
Sljedeći primjer prikazuje događaj klika na gumb pomoću programa 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); } }
Izlaz:
c ++ slučajni broj između 0 i 100
Gornji program implementira događaj ActionListener. Događaj je događaj klika na gumb i s njim smo pridružili ActionListener koji prikazuje tekst u tekstnom polju nakon klika na gumb.
KeyListener u Javi
Kad god se promijeni stanje ključa, obavijesti se KeyListener. Baš kao i ActionListener, i KeyListener se nalazi u paketu java.awt.event.
Sučelje KeyListener pruža sljedeće metode:
javni sažetak void keyPress (KeyEvent e);
javni sažetak void keyReleased (KeyEvent e);
javni sažetak void keyTyped (KeyEvent e);
Moramo implementirati gore navedene metode kako bismo ključne događaje povezali s komponentom. Korisniku prepuštamo da implementira primjer KeyListenera pomoću swinga u Javi.
Swing rasporedi u Javi
Kada rasporedimo razne komponente u spremnik, tada kažemo da postavljamo te komponente. Tako se raspored može definirati kao pozicioniranje komponenata u spremniku.
Sve dok je manje komponenata, one se mogu ručno povući i povući. Ali postaje teško rasporediti komponente u velikom broju. U ovom trenutku u pomoć nam dolazi Layout Manager Java.
LayoutManager odgovoran je za raspored komponenata u GUI aplikacijama. LayoutManager je sučelje i implementiraju ga sve klase upravitelja izgleda. Java nudi sljedeće klase LayoutManager.
LayoutManager | Opis |
---|---|
javax.swing.GroupLayout | Grupira komponente i zatim ih postavi u spremnik. |
java.awt.BorderLayout | Komponente su raspoređene u pet smjerova, naime centar, istok, zapad, jug, sjever. |
java.awt.FlowLayout | Ovo je zadani izgled. Postavlja komponente u usmjereni tok. |
java.awt.GridLayout | Složi komponente u pravokutnu mrežu. |
javax.swing.BoxLayout | Komponente su poredane u kutiju. |
java.awt.CardLayout | Svaka komponenta se gleda kao karta u špilu i istodobno je vidljiva samo jedna komponenta. |
java.awt.GridBagLayout | Rasporeduje komponente okomito, vodoravno ili čak duž njihovih osnovnih linija. Komponente ne moraju biti iste veličine. |
javax.swing.ScrollPaneLayout | Koristi ga klasa JScrollPane i odgovoran je za raspored komponenata u pomičnim spremnicima. |
javax.swing.SpringLayout itd. | Predviđen je skup ograničenja poput vodoravne i okomite udaljenosti između komponenata itd., A komponente su poredane u skladu s tim skupom ograničenja. |
U ovom uputstvu razgovarat ćemo samo o FlowLayoutu i GridLayoutu.
FlowLayout u Javi
FlowLayout raspoređuje komponente u smjeru protoka, jednu za drugom. Ovo je zadani izgled za spremnike poput Panela i Apleta.
Klasa FlowLayout u Javi koja predstavlja upravitelj FlowLayout sadrži sljedeća polja i konstruktore.
Polja klase FlowLayout
- javni statički konačni int VODENJE
- javni statički konačni int PRIPREMA
- javni statički konačni int LIJEVO
- javni statički konačni int DESNO
- javni statički konačni int CENTAR
Gornja polja definiraju položaje na kojima će se komponente postaviti ili poravnati.
Konstruktori klase FlowLayout
- FlowLayout (): Ovo je zadani konstruktor. Ovaj konstruktor stvara raspored protoka koji ima središnje poravnate komponente sa zadanim razmakom od 5 jedinica u vodoravnom i okomitom smjeru.
- FlowLayout (int align): Ovaj konstruktor stvara raspored protoka s navedenom vrijednošću poravnanja i s vodoravnim i okomitim razmakom od 5 jedinica.
- FlowLayout (int poravnanje, int hgap, int vgap): Stvara raspored protoka s navedenom vrijednošću poravnanja i vodoravnim i okomitim razmakom.
Slijedi primjer FlowLayout u 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(); } }
Izlaz:
GridLayout u Javi
Korištenjem GridLayout možemo rasporediti komponente na način pravokutne mreže, tj. Svaka komponenta je raspoređena u svaki pravokutnik.
Konstruktori klase GridLayout
- GridLayout (): zadani konstruktor koji generira raspored mreže koji ima jedan stupac po jednoj komponenti u nizu.
- GridLayout (int redovi, int stupci): Ovaj konstruktor generira raspored mreže s navedenim redovima i stupcima. Ne postoji jaz između komponenata.
- GridLayout (int redovi, int stupci, int hgap, int vgap): Koristeći ovaj konstruktor, generiramo raspored mreže s navedenim redovima i stupcima te vodoravnim i okomitim prazninama.
Sljedeći primjer implementira GridLayout u 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(); } }
Izlaz:
Postavke u Javi
Ako provjerimo primjere programiranja u ovom vodiču prije teme izgleda, možemo vidjeti da smo u tim primjerima postavili izgled kao nulu (setLayout (null)). Vidjeli smo da kada koristimo upravitelje izgleda u našem programu, oni automatski postavljaju komponente.
Kada se upravitelji izgleda ne koriste, metodu setBounds možemo koristiti prema veličini i položaju komponente. Dakle, metoda setBounds koristi se za ručno pozicioniranje komponente i također postavljanje veličine.
Opća sintaksa metode setBounds je kako slijedi:
setBounds (int x-koordinata, int y - koordinata, int širina, int visina)
Primijenimo sada primjer 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); } }
Izlaz:
kako dodati u niz u javi
U gore navedenom programu imamo komponentu Button. Nismo postavili nikakav izgled, ali koristili smo metodu setBounds za postavljanje njenog položaja i dimenzija.
Swing protiv JavaFX-a
Ljuljačka | JavaFX |
---|---|
Swing pruža API za stvaranje GUI komponenti. | JavaFX pruža skripte i brz razvoj korisničkog sučelja povezan s graditeljem zaslona. |
U budućim verzijama Swingu neće biti dodana nova funkcionalnost. | JavaFX pruža bogatu funkcionalnost i potencijal za više značajki u budućim verzijama. |
Pomoću Swing API-a možemo stvoriti sve standardne komponente. | JavaFX omogućuje nam stvaranje bogatih GUI komponenata koristeći napredni izgled i dojam. |
U Swingu je prisutan velik broj komponenata. | JavaFX ima razmjerno manji broj komponenata. |
Swing je potpuno značajka UI knjižnice. | JavaFX je novi i nadolazeći API s bogatim komponentama korisničkog sučelja. |
Swing ima labavu MVC podršku. | JavaFX dosljedno podržava MVC obrazac. |
Često postavljana pitanja
P # 1) Koristi li se Swing još uvijek u Javi?
Odgovor: Da, Swing se još uvijek koristi u Javi, i to previše. Ponekad se koristi kao potpuna zamjena za AWT. Ponekad se koristi i zajedno s nekim od AWT komponenata. Čak se koristi i s najnovijim JavaFX-om. Dakle, Swing se još uvijek koristi i koristit će se još dugo.
P # 2) Kako funkcionira Java Swing?
Odgovor: Swing u Javi napisan je na vrhu AWT okvira. Dakle, obrada događaja AWT nasljeđuje se potpuno swingom. Swing također nudi velik broj komponenata koje možemo koristiti za razvoj učinkovitih GUI aplikacija.
P # 3) Slijedi li Swing MVC?
Odgovor: Swing API ima labavu MVC podršku. Model predstavlja podatke komponente. Swing komponenta ima zasebni element nazvan Model dok su Controller i View udruženi u UI elemente. Ovo klabiranje omogućava ljuljački da ima izgled i osjećaj koji se mogu spojiti.
P # 4) Je li JavaFX bolji od Swinga?
Odgovor: Swing postoji već dugo i ima zreliju IDE podršku. Također je imao vrlo veliku biblioteku komponenata. JavaFX je relativno noviji i ima malu biblioteku komponenata, ali s dosljednijim ažuriranjima i dosljednom podrškom za MVC. Stoga ovisi o tome kako se JavaFX dalje razvija i pruža više značajki.
P # 5) Što je bolje AWT ili Swing?
Odgovor: Swing je izgrađen na vrhu AWT-a i pruža bogat i velik skup UI komponenata u usporedbi s AWT-om. Swing komponente također mogu imati svoj izgled i izgled u usporedbi s AWT komponentama koje izgledaju i izgledaju kao operativni sustav.
Swing komponente brže su od AWT-a. Svi ovi čimbenici čine zamah boljim od AWT-a.
Više o Java Swingu
Kada kreirate aplikaciju, u početku biste trebali imati osnovni spremnik i u spremnik morate dodati potrebne komponente, poput gumba i tekstualnih polja.
A kada kliknete ili izvršite bilo koju operaciju na bilo kojem polju, dogodit će se događaj i vaš kôd treba slušati događaje i također rukovati događajem.
Spremnik za ljuljanje
Spremnik je korijenski element za aplikaciju. Sve ostale komponente dodane su tom korijenu i on čini hijerarhiju.
Postoje tri klase spremnika:
- JFrame
- JDialog
- JApplet
Demo kontejnera pomoću JFrame-a:
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); } }
Kada pokrenete gornji program, dobit ćete donji izlaz.
Komponente
Klasa JComponent je osnovna klasa za sve komponente u zamahu.
Često korištene komponente uključuju,
- JButton
- JTextField
- JTextArea
- JRadioButton
- JComboBox itd.
Sve ove komponente treba dodati u spremnik, ako ne, neće se pojaviti u aplikaciji.
Primjer:
Da biste stvorili instancu gumba,
JButton clickButton = novi JButton ();
Da biste dodali gumb u spremnik,
myFrame.add ();
Rukovanje događajima
Sve se aplikacije pokreću događajima poput klikova na gumbe, klikova mišem, unosa korisničkog teksta itd. Kada se dogodi događaj, morate dodati slušatelja i morate proslijediti izvorni objekt događaja.
S unutarnjom klasom možete se nositi s događajem svojom logikom kao što je prikazano u nastavku.
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čak
U ovom uputstvu dodirnuli smo bazu s Swing API-jem koji Java nudi za izgradnju GUI aplikacija. Razgovarali smo o glavnim ljuljačkim spremnicima i komponentama i njihovoj primjeni.
Također smo razgovarali o rukovanju događajima u Swingu. Iako je mehanizam za upravljanje događajima AWT, swing događaje primjenjuje na učinkovit način. Zatim smo razgovarali o različitim upraviteljima izgleda koje nudi Swing API koji nam omogućuju raspored ili uređivanje različitih komponenata u Swing GUI aplikacijama.
=> Ovdje pogledajte Savršeni vodič za Java obuku.
Preporučena literatura
- Java Vodič za refleksiju s primjerima
- JAVA Tutorial za početnike: 100+ praktičnih Java Video tutorijala
- Vodič za Java Collections Framework (JCF)
- Pristupiti modifikatorima u Javi - Vodič s primjerima
- Java string sa String Buffer-om i String Builder Tutorial
- Uvod u programski jezik Java - Video vodič