Creați un GUI cu Swing în Java

Acest articol explică modul de creare a unei aplicații simple, prezentată în imagine în partea dreaptă, și specifică și codul sursă.

Pentru a plasa butoane, subtitrări în formă de text și alte componente ale ferestrei programului, trebuie să înțelegeți JPanel. Este un fel de container pentru componente electronice, care are partea dreptunghiulară a ferestrei pe ecran și care arată componentele proiectate într-un mod simplu. Modul în care sunt proiectate componentele depinde de aspectul pe care l-ați ales pentru acest panou. Cu programare manuală, cel puțin, va trebui să cunoască structura de frontieră, care a plasat patru componente pe părțile laterale și o componentă de mare în mijlocul probabil atunci FlowLayout pe care în mod normal, una lângă alta, dispuse într-un rând orizontal, și în cele din urmă aspectul grilă, care componentele la orice tabel n * m. Există mai multe, dar altele par prea complexe pentru începători. Ideea cheie aici este că o "componentă" nu poate fi doar un buton sau o casetă de bifare - poate fi și una JPanel fie. Puteți obține o interfață complexă de utilizator prin plasarea simplă a panourilor lângă ele și selectarea aspectului pentru ele.

Dacă sunteți o instanță JPanels au, apelați metoda .setLayout pentru a adăuga componentele la acesta. când BorderLayout trebuie să specificați locația ca al doilea parametru. De exemplu, sunați myPanel.add (myButton, BorderLayout.North) pentru a instala butonul în sus.

Containerul de nivel superior care apare pe ecran cu aplicația Java nu este JPanel, dar unul JFrame. apel myJFrame.getContentPane () adăugați (myJpanel, BorderLayout.Center) pe panoul principal al instanței JFrame add.

Pentru ca cererea dvs. să facă mai mult decât afișarea, veți avea nevoie de aceasta ActionListener-Înțelegeți interfața. Toată lumea nu este abstractă ActionListener are o singură metodă actionPerformed, care se numește automat atunci când utilizatorul efectuează o "acțiune" asupra componentei pentru care ascultătorul este înregistrat (acțiunea pe un buton este - evident - să faceți clic pe el). Pentru a înregistra ascultătorul de acțiune pentru butonul sau altă componentă, apelați metoda .addActionListener.

metodă

Metoda 1
Creați întregul cadru

Imaginea intitulată Creați o interfață grafică Swing în Java Pasul 1
1
Creați o clasă pe care JFrame-Clasă extinsă. Această clasă conține toate componentele GUI, cum ar fi butoanele și casetele de text.
  • Imaginea intitulată Creați o interfață grafică Swing în Java Pasul 2
    2
    Planificați aspectul global al primei aplicații. Un început bun ar putea fi un panou central în BorderLayout cu un alt panou de mai jos (BorderLayout.Southbe). Acest al doilea panou poate fi în FlowLayout și să conțină mai multe butoane, casete de selectare și alte controale similare. În cele din urmă, puneți-l pe cel mare JTextArea în mijlocul componentei centrale. Îți poți face metodele getText () și setText () utilizați pentru a efectua interacțiuni bazate pe text cu utilizatorul.
  • Imaginea intitulată Creați o interfață grafică Swing în Java Pasul 3
    3
    Scrie un constructor pentru clasa ta. Acest constructor trebuie să creeze toate panourile și componentele planificate, să le plaseze în mod corespunzător și să adauge la cadrul dvs. panoul final care "ține" totul împreună: (myFrame.getContentPane (). adăugați (myLargePanel, BorderLayout.Center).
  • Imaginea intitulată Creați o interfață grafică Swing în Java Pasul 4
    4
    Scrieți metoda principală, care este punctul de intrare al programului. În această metodă, creați o instanță a cadrului dvs., setați dimensiunea și poziția inițială (utilizați.setSize (x, y) și .setLocation (lățime, înălțime) ) și lăsați-le să apară pe ecran făcând clic pe .setVisible (true) numești.
  • Metoda 2
    Răspunsuri la programe pentru acțiunile utilizatorilor

    Imaginea intitulată Creați o interfață grafică Swing în Java Pasul 5


    1
    Lăsați-vă rama ActionListener-Implementați interfața. Acest lucru permite clasei tale să "asculte" activitățile componentelor.
  • Imaginea intitulată Creați o interfață grafică Swing în Java Pasul 6
    2
    Apelați metoda sa pentru toate butoanele create, casetele de selectare sau alte controale.addActionListener pe mâner și pe mâner (acest) ca parametru.
  • Imaginea intitulată Creați o interfață grafică Swing în Java Pasul 7
    3
    Depășiți metoda abstractă acțiunePerformed (eveniment ActionEvent) din ActionListener. În această metodă, trebuie să setați dacă declarațiile care verifică de unde provine evenimentul de acțiune. Această instrucțiune if ar trebui să aibă o condiție precum: "dacă (event.getSource () == button1Acest lucru verifică de unde a apărut evenimentul și dacă a venit din butonul dvs., faceți orice în instrucțiunea if care trebuie făcută când faceți clic pe butonul dvs.
  • Imaginea intitulată Crearea unui GUI în Swing în Java Pasul 8
    4
    JTextArea are o metodă .setText ( "textul meu"), care pare potrivit pentru a programa răspunsuri vizibile la acțiunea dvs.
  • Sfaturi

    • Nu este atât de greu MouseListener-Implementați interfața și .addMouseListener pentru a vă înregistra pentru orice componentă.
    • Dacă trebuie să interogați utilizatorul pentru introducerea textului, apelați metoda statică JOptionPane.showInputDialog (aceasta, "Mesajul meu") pe. Primul parametru trebuie să fie cadrul aplicației dvs. sau al unui panou (câmpul de introducere va apărea în mijlocul elementului părinte). Această metodă returnează valoarea pe care utilizatorul o introduce în caseta de dialog.
    • Este cu GridBagLayout posibil pentru a pune toate componentele într-un singur panou, dar această clasă este mai dificil de stăpânit.
    • Dacă doriți să desenați propriile obiecte grafice (ca o tablă de șah), citiți mai multe despre componenta Canvas. Poate fi plasat ca oricare alta in aplicatia dvs., dar trebuie sa scrieti metoda .paint, care este complet responsabila pentru desen.
    • În multe aplicații practice, componenta cea mai utilă de leagăn este JTable. Conduceți imediat cu ea după ce ați stăpânit elementele de bază.

    avertismente

    • Unele medii de dezvoltare oferă posibilitatea de a crea GUI Swing într-un mod "ușor de utilizat". Cu toate acestea, adesea nu reușesc să finalizeze în mod corespunzător un panou cu funcții avansate. Aceste funcții sunt copaci, tabele, liste și casete combinate al căror conținut se schimbă în timpul execuției componentelor programului, cu modele individuale de date, etc. Codul care a fost creat într-un mod „user-friendly“, poate fi un coșmar, dacă trebuie să o terminați manual mai târziu. Deci, nu te va ține prea mult, deoarece limitează la un „designer de GUI user-friendly“ performanța programării pe opțiuni limitate.
    • Swing este o aplicație cu un singur fir. Dacă procesarea acțiunii dvs. durează prea mult timp de calcul, "îngheți" până la metoda dvs. .actionPerformed se întoarce. Aflați și utilizați multithreading în Java pentru a menține Swing "în viață" în timp ce procesul dvs. consumator de timp este în desfășurare.
    • Cele mai multe metode ale componentelor Swing pot fi numite în mod fiabil numai de firul care activează evenimentul (cel care .actionPerformed și alte metode similare de ascultător). Dacă trebuie să le apelați dintr-un alt fir (de exemplu, pentru a actualiza bara de progres sau a afișa rezultatele unui proces lung), citiți mai multe SwingUtils.invokeLater.

    Cod sursă

    {{Codebox |

    import java.awt.BorderLayout-import java.awt.FlowLayout-import java.awt.event.ActionEvent-import java.awt.event.ActionListener-import javax.swing.JButton-import javax.swing.JCheckBox-import javax.swing .JFName-import javax.swing.JPanel-import javax.swing.JTextArea -. / *** foarte simplu aplicație Java Swing * Conține un buton o casetă de selectare și. .. * Raspundeti la modificări cu aceste elemente de control de către * Modificarea textului în zona de text principal ** @Autor audriusa * / public class WikiHow extinde JFrameimplements ActionListener {/ *** Butonul * / JButtonmyButton = new JButton ( "buton") - / * ** caseta de validare * / JCheckBoxmyCheckBox = new JCheckBox ( "check") - .. / *** câmpul de text * / JTextAreamyText = new JTextArea ( "Textul meu") - / *** panoul inferior care conține butonul. * / JPanelbottomPanel = new JPanel () -. / *** panoul superior, care include totul * / JPanelholdAll = new JPanel () -. / *** constructorul * / publice WikiHow () {bottomPanel.setLayout (nou FlowLayout ()) - bottomPanel.add (myCheckBox) -bottomPanel.add (myButton) -holdAll.setLayout (nou aspect de frontieră ()) - holdAll.add (panou inferior, BorderLayout.SOUTH) -holdAll.add (myText, BorderLayout.CENTER) - getContentPane () se adaugă (cutie universală, BorderLayout.CENTER) -myButton.addActionListener (acest lucru) -myCheckBox.addActionListener (aceasta) -setDefaultCloseOperation (DISPOSE_ON_CLOSE) -.} / * *** programul @paramProgrammparam pentru începutul eter nu sunt utilizate void main ([] String args) * / public static {WikiHow MyApplication = new WikiHow () -. // decide locația în care pe ecran apare myApplication.setLocation (10, 10) - myApplication.setSize (300, 300) - // anunțuri myApplication.setVisible (true) -} / *** Fiecare clasă de bază non-abstractă care pune în aplicare ActionListener, * nevoie de această metodă ** @parame cazul acțiunii *.. / public void actionPerformed (Acțiunea Evente) {if (e.getSource () == myButton) myText.setText ( "Un clic pe butonul") - else if (e.getSource () == myCheckBox) myText.setText ( „The checkbox stateChanged la "+ myCheckBox.isSelected ()) - elsemyText.setText (" e ... „) -}}}}
    Distribuiți pe rețelele sociale:

    înrudit