java swing tutorial container
Denne omfattende Java Swing video tutorial forklarer forskellige komponenter i GUI Swing Framework og relaterede begreber som JPanel, JFrame, JButton osv:
Vi bruger grafiske brugergrænseflader (ofte kaldet GUI) til at opbygge applikationer, der har en visuel grænseflade ved at gøre det nemt for brugeren at bruge applikationen.
At have en visuel grænseflade til en applikation gør det let at navigere i applikationen, bruge kontroller mere effektivt, og det er også visuelt tiltalende for brugeren.
Swing bruges hovedsageligt til oprettelse af GUI til applikationer.
=> Besøg her for at se Java Training Series for alle.
Hvad du vil lære:
- Video tutorial om Java Swing
- Hvad er Java Swing
- Java-svingkomponenter
- Gyngeklasser i Java
- Sving mod JavaFX
- Konklusion
Video tutorial om Java Swing
Hvad er Java Swing
Java leverer mange GUI-rammer, der hjælper os med at udvikle en række GUI-applikationer. Vi har set en i vores tidligere tutorial, dvs. Abstract Window Toolkit eller AWT. AWT er en af de ældste GUI-rammer i Java og er også platformafhængig. En anden ulempe ved AWT er dens tunge komponenter.
I denne vejledning diskuterer vi endnu en GUI-ramme i Java, dvs. 'SWING'. Swing-rammen i Java er en del af Java Foundation Classes eller almindeligvis kaldet JFC'er. JFC er en API, der ligner MFC'er (Microsoft Foundation Classes) i C ++. JFC indeholder Swing, AWT og Java2D.
Swing-rammen i Java er bygget oven på AWT-rammen og kan bruges til at oprette GUI-applikationer ligesom AWT. Men i modsætning til AWT er Swing-komponenterne lette og er platformuafhængige.
Swing-rammen er udelukkende skrevet på Java. Swing-rammen i Java leveres gennem pakken 'javax.swing'. Klasser i pakken javax.swing begynder med bogstavet 'J'. Så i en javax.swing-pakke har vi klasser som JButton, JFrame, JTextField, JTextArea osv.
Generelt har Swing API enhver kontrol defineret i javax.swing-pakke, der findes i AWT. Så swing på en måde fungerer som en erstatning for AWT. Swing har også forskellige avancerede ruder med faneblade. Swing API i Java tilpasser MVC (Model View Controller) -arkitektur.
De vigtigste egenskaber ved denne arkitektur er:
- Svingkomponentens data er repræsenteret ved hjælp af Model.
- Det er visuelt repræsenteret ved hjælp af en visning.
- Controller-komponenten i MVC-arkitekturen læser input fra brugeren på visningen, og derefter sendes disse ændringer til komponentdataene.
- I hver Swing-komponent er visningen og controlleren sammenkoblet, mens modellen er en separat. Dette giver sving et pluggbart look og feel-funktion.
Funktionerne i swing API er opsummeret nedenfor.
- Svingkomponenter er platformuafhængige.
- API'en kan udvides.
- Svingkomponenter er lette. Svingkomponenterne er skrevet i ren Java, og komponenter gengives også ved hjælp af Java-kode i stedet for underliggende systemopkald.
- Swing API giver et sæt avancerede kontroller som TabbedPane, Tree, Colorpicker, tabelkontrol osv., Der er rige på funktionalitet.
- Svingkontrollerne kan tilpasses meget. Dette skyldes, at komponentens udseende eller udseende er uafhængig af intern repræsentation, og derfor kan vi tilpasse det på den måde, vi ønsker.
- Vi kan simpelthen ændre værdierne og dermed ændre udseendet på runtime.
Java-svingkomponenter
Swing har et stort sæt komponenter, som vi kan medtage i vores programmer og benytte de rige funktioner, hvor vi kan udvikle meget tilpassede og effektive GUI-applikationer.
Så hvad er en komponent?
En komponent kan defineres som en kontrol, der kan repræsenteres visuelt og normalt er uafhængig. Det har en bestemt funktionalitet og er repræsenteret som en individuel klasse i Swing API.
For eksempel, klasse JButton i sving API er en knapkomponent og giver funktionaliteten af en knap.
En eller flere komponenter danner en gruppe, og denne gruppe kan placeres i en 'beholder'. En container giver et rum, hvor vi kan vise komponenter og også styre deres afstand, layout osv.
I Java er containere opdelt i to typer som vist nedenfor:
Gyngeklasser i Java
Et Swing API-hierarki i Java vises nedenfor:
Som set fra ovenstående hierarki har vi Container-klasser - ramme, dialog, Panel, Applet osv. Der er også komponentklasser afledt af JComponent-klassen i Swing API. Nogle af de klasser, der arver fra JComponent, er JLabel, JList, JTextBox osv.
Nogle af de vigtige klasser af Swing API er som følger:
- JWindow: JWindow-klassen af Swing arver Window-klassen direkte. JWindow-klassen bruger 'BorderLayout' som standardlayout.
- JPanel: JPanel er en efterkommer af JComponent-klasse og er på lignende linjer som AWT-klassepanel og har 'FlowLayout' som standardlayout.
- JFrame: JFrame stammer fra klassen Frame. Komponenterne, der føjes til rammen, kaldes rammen.
- JLabel: JLabel-klassen er en underklasse af JComponent. Det bruges til at oprette tekstetiketter i applikationen.
- JButton: Trykknapfunktionaliteten i Swing leveres af JButton. Vi kan knytte en streng, et ikon eller begge til JButton-objektet.
- JTextField: JTextField-klassen giver et tekstfelt, hvor vi kan redigere en enkelt tekstlinje.
JFrame i Java
En ramme er generelt en beholder, der kan indeholde andre komponenter såsom knapper, etiketter, tekstfelter osv. Et rammevindue kan indeholde en titel, en ramme og også menuer, tekstfelter, knapper og andre komponenter. En applikation skal indeholde en ramme, så vi kan tilføje komponenter inde i den.
Rammen i Java Swing er defineret i klassen javax.swing.JFrame. JFrame-klassen arver klassen java.awt.Frame. JFrame er som hovedvinduet i GUI-applikationen ved hjælp af swing.
Vi kan oprette et JFrame-vindueobjekt ved hjælp af to tilgange:
c ++ vent 1 sekund
# 1) Ved at udvide JFrame-klassen
Den første tilgang er at skabe en ny klasse til at konstruere en ramme. Denne klasse arver fra JFrame-klassen i pakken javax.swing.
Følgende program implementerer denne tilgang.
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 } }
Produktion:
# 2) Ved at Instantiere JFrame-klassen
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 } }
Produktion:
I ovenstående program har vi oprettet en ramme fra JFrame-klassen ved at oprette en forekomst af JFrame-klassen.
JPanel i Java
Et panel er en komponent, der er indeholdt i et rammevindue. En ramme kan have mere end et panel komponenter inde i den, hvor hver panel komponent har flere andre komponenter.
I lettere vilkår kan vi bruge paneler til at opdele rammen. Hvert panel grupperer flere andre komponenter inde i det. Med andre ord bruger vi paneler til at organisere komponenter inde i rammen.
Swing API-klassen, der implementerer panelkomponenten, er JPanel. JPanel-klasse arver fra JComponent og har FlowLayout som standardlayout.
Det følgende program demonstrerer oprettelsen af en panelcontainer i en ramme ved hjælp af pakkeklasser 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 } }
Produktion:
Her har vi en ramme. Inde i rammen opretter vi et panel. Derefter opretter vi en knap inde i panelet. På denne måde kan vi bruge et panel til at holde de andre komponenter.
JTextArea i Java
TextArea definerer et redigerbart tekstfelt. Det kan have flere linjer. Svingklassen, der definerer tekstområdet, er JTextArea, og den arver JTextComponent-klassen.
offentlig klasse JTextArea udvider JTextComponent
JTextArea-klassen indeholder 4 konstruktører, der giver os mulighed for at oprette et tekstområde med forskellige muligheder.
- JTextArea (): Standardkonstruktør. Opret et tomt tekstområde.
- JTextArea (streng s): Opretter et tekstområde med s som standardværdi.
- JTextArea (int række, int kolonne): Opretter et tekstområde med en specificeret række x kolonne.
- JTextArea (streng s, int række, int kolonne): Opretter en tekst are2a med specificeret række x kolonne og standardværdi s.
Følgende Java-program viser et eksempel på JTextArea-komponenten i sving.
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 } }
Produktion:
JButton I Java
En knap er en komponent, der bruges til at oprette en trykknap med et navn eller en etiket på. I sving er klassen, der opretter en mærket knap, JButton. JButton arver klassen AbstractButton. Vi kan knytte ActionListener-hændelsen til knappen for at få den til at tage noget, når den skubbes.
Lad os implementere et eksempelprogram til JButton i Java-gynger.
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); } }
Produktion:
JList I Java
En liste består af flere tekstelementer. Brugere kan enten vælge et enkelt emne eller flere emner ad gangen. Den klasse, der implementerer listen i swing API, er JList. JList er en efterkommer af JComponent-klassen.
Nedenfor er konstruktørerne af JList-klassen.
- JList (): Standardkonstruktør, der opretter en tom, skrivebeskyttet liste.
- JList (array () listItem): Opret en JList, der oprindeligt indeholder elementer i array listItem.
- JList (ListModel dataModel): Opretter en liste med elementer fra den specificerede model dataModel.
En simpel demonstration af JList-komponenten er givet nedenfor.
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); } }
Produktion:
I ovenstående program definerer vi først en listeModel med farveindgange i den. Derefter opretter vi et JList-objekt og tilføjer listModel til det. Derefter føjes JList-objektet til rammeobjektet, som derefter vises.
JComboBox i Java
JCombobox-klassen viser en liste over valg, hvorfra en bruger kan vælge en indstilling. Det valgte valg er øverst. JComboBox stammer fra JComponent-klassen.
Følgende er konstruktørerne leveret af JComboBox klasse:
- JComboBox (): Standardkonstruktør, der opretter en ComboBox med standarddatamodellen.
- JComboBox (Objekt () elementer): Denne konstruktør opretter en ComboBox med elementer som elementer i de givne matrixelementer.
- JComboBox (vektorelementer): Denne konstruktør læser elementerne i den givne vektor og konstruerer en ComboBox med disse elementer som dens emner.
JComboBox-klassen indeholder også metoder til at tilføje / fjerne emner, tilføje ActionListener, ItemListener osv.
Følgende eksempel viser JComboBox-implementeringen i Java.
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(); } }
Produktion:
JSlider i Java
En skyder giver os mulighed for at vælge et bestemt værdiområde. I Java Swing API er JSlider den klasse, der bruges til at implementere skyderen.
Følgende er konstruktørerne leveret af JSlider-klassen.
- JSlider (): En standardkonstruktør, der opretter en skyder, der har 50 som startværdi og område 0-100.
- JSlider (int-retning): Denne konstruktør opretter en skyder ligesom ovenfor, men med en bestemt retning. Orienteringsværdien kan være enten JSlider.HORIZONTAL eller JSlider.VERTICAL.
- JSlider (int min, int max): Denne konstruktør bruges til at oprette en vandret skyder ved hjælp af den givne min og max.
- JSlider (int min, int max, int værdi): Denne konstruktør opretter en skyder, der er vandret med den angivne værdi på min, max og værdi.
- JSlider (int-retning, int min, int max, int-værdi): Denne konstruktør konstruerer en skyder med specificeret retning, min, max og værdi.
Det følgende program demonstrerer JSlider i Java med flåter. Dette program demonstrerer også brugen af de metoder, der understøttes af JSlider-klassen.
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); } }
Produktion:
Begivenhedshåndtering i Java
En begivenhed kan defineres som en ændring af et objekts tilstand. Fra GUI-synspunktet opstår der en begivenhed, når slutbrugeren interagerer med GUI-komponenterne. De begivenheder, der udløses i GUI'en, kan være et klik på en knap, rulning, valg af listeelementer, ændring af tekst osv.
Begivenheder, der forekommer i GUI, der er anført ovenfor, er for det meste forgrundshændelser. Vi kan også have nogle baggrundshændelser som afslutning af baggrundsoperation, udløb af timer osv.
Begivenhedshåndtering er en mekanisme, hvorigennem en handling udføres, når en begivenhed finder sted. Til dette definerer vi en metode, der også kaldes en begivenhedshåndterer, der kaldes, når en begivenhed opstår. Java bruger en standardmekanisme kaldet “Delegation event model” til at generere såvel som håndtere begivenheder.
Delegationsbegivenhedsmodellen består af:
# 1) Kilde: Kilden til begivenheden er objektet. Objektet, som en begivenhed finder sted på, er kilden, og kilden er ansvarlig for at sende information om begivenheden til begivenhedshåndtereren.
# 2) Lytter: Lytteren er intet andet end den begivenhedshåndterer, der er ansvarlig for at tage en handling, når en begivenhed finder sted. I Java er en lytter et objekt, der venter på en begivenhed. Når begivenheden har fundet sted, behandler lytteren begivenheden.
Kravet er at registrere lytteren med objektet, så når en begivenhed opstår, kan lytteren behandle den.
For eksempel,for en knap klik begivenhed, kan vi have følgende rækkefølge af trin.
- Brugeren klikker på knappen, der genererer en Click-begivenhed.
- Det relevante begivenhedsklasseobjekt oprettes, og kildedataene sendes til dette objekt.
- Dette begivenhedsobjekt sendes derefter til den lytterklasse, der er registreret med objektet.
- Lytteren udfører og vender tilbage.
Lad os nu diskutere nogle af de lyttere, der leveres af Java.
ActionListener i Java
En actionListener er lytteren efter en knap eller et menupunkt. Når vi klikker på en knap, er den involverede knap actionListener. ActionListener får besked i ActionEvent.
Begivenhedspakken java.awt.an definerer ActionListener-grænsefladen. Denne grænseflade har kun en metodehandlingPerformed ().
flet sortering i c ++
offentlig abstrakt ugyldig handlingPerformeret (ActionEvent e);
Når der klikkes på en registreret komponent som en knap, påkaldes metoden actionPerformed () automatisk.
Den mest almindelige tilgang til at inkludere ActionListener i programmet er at implementere ActionListener-grænsefladen og derefter implementere metoden actionPerformed ().
Trinene til implementering af ActionListener-klassen er som følger:
# 1) Implementér grænsefladen ActionListerner.
offentlig klasse ActionListenerImpl Implementerer ActionListener
# 2) Registrer komponenten hos denne lytter. Hvis knappen er en komponent, som vi vil registrere hos lytteren, registrerer vi den som følger:
button.addActionListener (instansOfListenerclass);
# 3) Implementere / tilsidesætte metoden actionPerformed ().
public void actionPerformed (ActionEvent e){ //code to perform action }
Så ved hjælp af ovenstående trin kan vi knytte enhver begivenhed til GUI-komponenten.
Følgende eksempel viser en knap Klik på begivenhed ved hjælp af 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); } }
Produktion:
Ovenstående program implementerer en ActionListener-begivenhed. Begivenheden er knappen Klikhændelse, og med den har vi tilknyttet en ActionListener, der viser teksten i tekstfeltet, når du klikker på knappen.
KeyListener I Java
Hver gang der sker en ændring i tastens tilstand, underrettes en KeyListener. Ligesom ActionListener findes KeyListener også i pakken java.awt.event.
KeyListener-interface giver følgende metoder:
offentlig abstrakt ugyldig nøgle Presset (KeyEvent e);
offentlig abstrakt ugyldig nøgleReleased (KeyEvent e);
offentlig abstrakt ugyldig keyTyped (KeyEvent e);
Vi er nødt til at implementere ovenstående metoder for at forbinde nøglebegivenhederne med komponenten. Vi overlader til brugeren at implementere et KeyListener-eksempel ved hjælp af gynger i Java.
Swing Layouts I Java
Når vi arrangerer forskellige komponenter i en container, siger vi, at vi lægger disse komponenter ud. Så et layout kan defineres som placeringen af komponenter i en container.
Så længe der er færre komponenter, kan de placeres ved træk-slip manuelt. Men det bliver svært at arrangere komponenterne stort. På dette tidspunkt kommer Layout Manager til Java til vores hjælp.
LayoutManager er ansvarlig for komponentenes layout i GUI-applikationer. LayoutManager er en grænseflade, og den implementeres af alle layoutmanagerklasser. Java giver følgende LayoutManager-klasser.
LayoutManager | Beskrivelse |
---|---|
javax.swing.GroupLayout | Grupperer komponenterne og placerer dem derefter i containeren. |
java.awt.BorderLayout | Komponenter er anbragt for at passe i fem retninger, nemlig centrum, øst, vest, syd, nord. |
java.awt.FlowLayout | Dette er standardlayoutet. Den lægger komponenterne i retningsstrømmen. |
java.awt.GridLayout | Arrangerer komponenterne i et rektangulært gitter. |
javax.swing.BoxLayout | Komponenter er arrangeret i en kasse. |
java.awt.CardLayout | Hver komponent ses som et kort i et kort, og ad gangen er kun én komponent synlig. |
java.awt.GridBagLayout | Arrangerer komponenter lodret, vandret eller endda langs deres basislinjer. Komponenter behøver ikke at være af samme størrelse. |
javax.swing.ScrollPaneLayout | Bruges af JScrollPane-klassen og er ansvarlig for at arrangere komponenter i rullbare containere. |
javax.swing.SpringLayout osv. | Et sæt begrænsninger som den vandrette og lodrette afstand mellem komponenter osv. Er tilvejebragt, og komponenterne er arrangeret i henhold til disse sæt begrænsninger. |
I denne vejledning diskuterer vi kun FlowLayout og GridLayout.
FlowLayout i Java
FlowLayout arrangerer komponenterne i en strømningsretning, den ene efter den anden. Dette er standardlayoutet for containere som Panel og Applet.
FlowLayout-klassen i Java, der repræsenterer FlowLayout-manager, indeholder følgende felter og konstruktører.
Felter i FlowLayout-klasse
- offentlig statisk endelig int FØRENDE
- offentlig statisk endelig int TRAILING
- offentlig statisk endelig int VENSTRE
- offentlig statisk endelig int HØJRE
- offentlig statisk endelig int CENTER
Ovenstående felter definerer de positioner, hvor komponenterne placeres eller justeres.
Konstruktører af FlowLayout-klasse
- FlowLayout (): Dette er en standardkonstruktør. Denne konstruktør opretter et flowlayout med centralt justerede komponenter med et standardafstand på 5 enheder i vandret og lodret retning.
- FlowLayout (int align): Denne konstruktør opretter et flowlayout med den angivne justeringsværdi og med et vandret og lodret hul på 5 enheder.
- FlowLayout (int align, int hgap, int vgap): Opretter et flowlayout med specificeret justeringsværdi og vandret og lodret mellemrum.
Nedenfor er et eksempel på FlowLayout i Java.
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(); } }
Produktion:
GridLayout i Java
Ved hjælp af GridLayout kan vi layout komponenterne på en rektangulær gitterform, dvs. hver komponent er arrangeret i hvert rektangel.
Konstruktører af GridLayout-klasse
- GridLayout (): standardkonstruktør, der genererer et gitterlayout med en kolonne pr. komponent i træk.
- GridLayout (int-rækker, int-kolonner): Denne konstruktør genererer et gitterlayout med specificerede rækker og kolonner. Der er ingen afstand mellem komponenterne.
- GridLayout (int-rækker, int-kolonner, int hgap, int vgap): Brug af denne konstruktør, vi genererer et gitterlayout med specificerede rækker og kolonner og vandrette og lodrette huller.
Følgende eksempel implementerer GridLayout i Java.
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(); } }
Produktion:
Setbounds i Java
Hvis vi kontrollerer programmeringseksemplerne i denne vejledning før layoutemnet, kan vi se, at vi har indstillet layoutet som null i disse eksempler (setLayout (null)). Vi har set, at når vi bruger layoutadministratorer i vores program, placerer de automatisk komponenterne.
Når layoutadministratorer ikke bruges, kan vi bruge metoden setBounds til komponentens størrelse og placering. Så metoden setBounds bruges til manuelt at placere komponenten og også indstille størrelsen.
Den generelle syntaks for setBounds-metoden er som følger:
setBounds (int x-koordinat, int y - koordinat, int bredde, int højde)
Lad os nu implementere et eksempel på SetBounds-metoden.
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); } }
Produktion:
test eksempel eksempel til manuel test
I ovenstående program har vi en knapkomponent. Vi har ikke indstillet noget layout, men vi har brugt metoden setBounds til at indstille dens position og dimensioner.
Sving mod JavaFX
Svinge | JavaFX |
---|---|
Swing giver en API til at oprette GUI-komponenter. | JavaFX giver scripts og hurtig UI-udvikling forbundet med screen builder. |
Der kommer ingen nye funktioner til Swing i fremtidige versioner. | JavaFX giver rig funktionalitet og har potentialet for flere funktioner i fremtidige versioner. |
Vi kan oprette alle standardkomponenter ved hjælp af Swing API. | JavaFX giver os mulighed for at oprette rige GUI-komponenter ved hjælp af avanceret udseende. |
Et stort antal komponenter er til stede i Swing. | JavaFX har et relativt mindre antal komponenter. |
Swing er et fuldt udstyret UI-bibliotek. | JavaFX er en ny og kommende API med rige UI-komponenter. |
Swing har løs MVC-understøttelse. | JavaFX understøtter MVC-mønster konsekvent. |
Ofte stillede spørgsmål
Q # 1) Bruges Swing stadig i Java?
Svar: Ja, Swing bruges stadig i Java, og det er for tungt. Nogle gange bruges det som en komplet erstatning for AWT. Nogle gange bruges det også sammen med nogle af AWT-komponenterne. Det bruges endda med den nyeste JavaFX. Så gynge bruges stadig og vil blive brugt i lang tid fremover.
Spørgsmål nr. 2) Hvordan fungerer Java Swing?
Svar: Swing in Java er skrevet oven på AWT-rammen. Så begivenhedshåndteringen af AWT nedarves ved at svinge helt. Swing leverer også et stort antal komponenter, som vi kan bruge til at udvikle effektive GUI-applikationer.
Q # 3) Følger Swing MVC?
Svar: Swing API har løs MVC-understøttelse. Modellen repræsenterer dataene for komponenten. Swing-komponenten har et separat element kaldet Model, mens Controller og View er sammenkoblet i UI-elementer. Denne clubbing gør det muligt for svinget at få et pluggeligt udseende.
Q # 4) Er JavaFX bedre end Swing?
Svar: Swing har eksisteret i lang tid og har mere moden IDE-støtte. Det havde også et meget stort bibliotek med komponenter. JavaFX er forholdsvis nyere og har et lille bibliotek med komponenter, men med mere ensartede opdateringer og konsekvent MVC-understøttelse. Således afhænger det af, hvordan JavaFX udvikler sig yderligere og giver flere funktioner.
Q # 5) Hvilket er bedre AWT eller Swing?
Svar: Swing er bygget oven på AWT og giver et rigt og stort sæt UI-komponenter sammenlignet med AWT. Gyngekomponenter kan også have deres udseende og modsætning til AWT-komponenter, der kigger på operativsystemet.
Svingkomponenter er hurtigere end AWT. Alle disse faktorer gør svingningen bedre end AWT.
Mere om Java Swing
Når du opretter et program, skal du oprindeligt have en basecontainer, og du skal tilføje de nødvendige komponenter som knapper og tekstfelter i containeren.
Og når du klikker eller udfører en handling på et hvilket som helst felt, vil begivenheden forekomme, og din kode skal lytte til begivenhederne og også håndtere begivenheden.
Gyngebeholder
En container er et rodelement til en applikation. Alle de andre komponenter føjes til den rod, og den danner et hierarki.
Der er tre containerklasser:
- JFrame
- JDialog
- JApplet
Containerdemo ved hjælp af 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); } }
Når du kører ovenstående program, får du nedenstående output.
Komponenter
JComponent klasse er en basisklasse for alle komponenter i en svingning.
De ofte anvendte komponenter inkluderer,
- JButton
- JTextField
- JTextArea
- JRadioButton
- JComboBox osv.
Alle disse komponenter skal føjes til beholderen, hvis ikke, det vises ikke på applikationen.
Eksempel:
For at oprette knapinstansen,
JButton clickButton = ny JButton ();
For at tilføje knappen til containeren,
myFrame.add ();
Håndtering af begivenheder
Alle applikationer er drevet af begivenheder som knap-klik, museklik, brugertekstinput osv. Når begivenheden finder sted, skal du tilføje en lytter og skal passere kildehændelsesobjektet.
Med en indre klasse kan du håndtere begivenheden med din logik som vist nedenfor.
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(); } }
Konklusion
I denne vejledning har vi rørt basen med Swing API leveret af Java til opbygning af GUI-applikationer. Vi har diskuteret de vigtigste gyngecontainere og komponenter og deres implementering.
Vi har også diskuteret håndtering af begivenheder i Swing. Selvom begivenhedshåndteringsmekanismen er af AWT, implementerer swing begivenhederne på en effektiv måde. Derefter diskuterede vi de forskellige layoutadministratorer leveret af Swing API, der giver os mulighed for at layout eller arrangere forskellige komponenter i Swing GUI-applikationerne.
=> Tjek den perfekte Java-træningsvejledning her.
Anbefalet læsning
- Java Reflection Tutorial med eksempler
- JAVA-vejledning til begyndere: 100+ praktiske Java-videovejledninger
- Java Collections Framework (JCF) vejledning
- Adgang modifikatorer i Java - vejledning med eksempler
- Java String med String Buffer og String Builder Tutorial
- Introduktion til Java-programmeringssprog - Video-tutorial