Wkuno

Hvordan lage en sving GUI i java

Først må du vite de grunnleggende java begrepene objekt og grensesnitt. Vi antar at du allerede vet dette.

Denne artikkelen forklarer hvordan du oppretter enkelt program som er vist i figuren til høyre, noe som gir sin kildekode også.

Å plassere knapper, tekst etiketter og andre komponenter på programvinduet, må du forstå om JPanel. Det er en slags beholder for komponentene, som opptar den rektangulært stykke på skjermen og viser komponentene anordnet på en eller annen enkel måte. Hvordan akkurat de komponentene er arrangert avhenger av hvilket oppsett du har satt til det panelet. For den manuelle vil du sannsynligvis trenger å vite minst Borderlayout som plasserer fire komponenter på sidene og en stor komponent inn i midten, så FlowLayout som vanligvis arrangerer dem side ved side i horisontal rad og til slutt GridLayout som arrangerer komponenter inn vilkårlig n * m bordet. Det finnes flere av dem, men andre synes for komplisert for nybegynnere. Nøkkelen Ideen her er at en "komponent" kan være ikke bare en knapp eller boksen - det kan også være en annen JPanel Du kan få en komplisert brukergrensesnitt ved bare å sette paneler en inne i en annen og velge oppsett for dem..

Når du har en forekomst av JPanel, ring. SetLayout metode for å angi oppsettet og deretter. Legge metode for å legge til komponentene til det. For BorderLayout, må du gi plasseringen som andre parameter. For eksempel, ring myPanel.add (myButton, BorderLayout.NORTH) å plassere knappen øverst kanten.

Det øverste nivået container, som vises på skjermen som representerer java-program, er ikke en JPanel men JFrame. Ring myJFrame.getContentPane (). Add (myJPanel, BorderLayout.CENTER) for å legge din viktigste panel til forekomsten av JFrame.

For å gjøre programmet til å gjøre mer enn bare å dukke opp må du også forstå ActionListener grensesnittet. Alle ikke-abstrakt ActionListener har en enkel metode, actionPerformed, som kalles automatisk når brukeren gjør en "handling" med den komponenten som lytteren er registrert (handlingen med knapp er, selvsagt, trykke den inn). For å registrere handling lytteren for knapp eller en annen komponent, kaller metoden . addActionListener..

Trinn

Hvordan lage en sving GUI i java. Planlegg den generelle utformingen av den første søknaden.
Hvordan lage en sving GUI i java. Planlegg den generelle utformingen av den første søknaden.

Gjør den totale rammen

  1. 1
    Lag en klasse som utvider JFrame klassen. Denne klassen vil holde alle dine GUI-komponenter, for eksempel knapper og textfields.
  2. 2
    Planlegg den generelle utformingen av den første søknaden. En god start kan være et sentralt panel med BorderLayout med et annet panel på bunnen (BorderLayout.SOUTH). Denne andre panel kan ha FlowLayout og inneholder flere knapper, avmerkingsbokser og andre lignende kontroller. Til slutt settes den store JTextArea inn i sentrum av den sentrale komponent. Du vil være i stand til å bruke sin GetText () og setText () metoder for å gjøre noen tekst-basert samhandling med brukeren.
  3. 3
    Skriv konstruktøren til klassen. Denne konstruktøren må lage alle paneler og komponenter du har tenkt å plassere dem riktig inn i hverandre og legge den endelige panel på "inneholder alle" til å ramme inn (myFrame.getContentPane (). Add (myLargePanel, BorderLayout.CENTER).
  4. 4
    Skriv den viktigste metoden som vil være programmets inngangspunkt. I denne metoden, opprette en forekomst av rammen, satt den opprinnelige størrelsen og plassering (bruk. SetSize (x, y) og. ​​SetLocation (bredde, høyde)) og gjør at den skal vises på skjermen ved å ringe. SetVisible (true).

Programmering respons på brukerens handlinger

  1. 1
    Gjør din ramme implementere ActionListener grensesnittet. Dette vil tillate din klasse til å lytte til komponenter 'aktiviteter.
  2. 2
    For hver knapp, en avmerkingsboks eller annen kontroll som du har opprettet, påkalle sin metode. AddActionListener, passerer rammen (denne) som parameter.
  3. 3
    Overstyring ActionListener abstrakte metoden, actionPerformed (ActionEvent hendelse). I denne metoden, bør du sette hvis uttalelser sjekke hvor kommer handlingen hendelse fra. Dette hvis setningen bør ha en tilstand som sier noe sånt som "if (event.getSource () == button1)". Dette sjekker hvor hendelsen kom fra og om det kom fra knappen din. Inne hvis setningen, gjøre hva som må gjøres når knappen trykkes.
  4. 4
    JTextArea har en metode. SetText ("myText") som synes godt som måten å programmere noen synlig reaksjon på handlingen din.

Tips

  • Det er ikke mye vanskeligere å implementere MouseListener grensesnitt og bruk. AddMouseListener registrere den til enhver komponent.
  • Hvis du ønsker å tegne dine egne grafiske objekter (som sjakkbrett), lese om Canvas komponent. Det kan plasseres inn i applikasjonen som alle andre, men du må skrive metoden. Maling som er fullt ut ansvarlig for å tegne den.
  • Hvis du trenger å spørre noen innspill strengen fra brukeren, kaller den statiske metoden J OptionPane.showInputDialog (dette, "Mitt budskap"). Den første parameteren må være din søknad ramme eller noen panel (input boks vil vises i midten av morselskapet). Metoden returnerer verdien som brukeren skriver inn i dialogboksen.
  • I mange praktiske anvendelser den mest nyttige Swing komponenten er JTable. Etter at du mestrer det grunnleggende, gå direkte til den.
  • Det er mulig å sette alle komponentene i enkelt panel med GridBagLayout, men denne klassen er vanskeligere å mestre.

Advarsler

  • Noen utviklingsmiljøer tilbyr muligheten til å komponere Swing GUI i en "brukervennlig" måte. Men de er ofte ute av stand til å fullføre et panel med avanserte funksjoner riktig. Slike funksjoner inkluderer trær, tabeller, lister og kombinasjonsbokser som endrer de innhold mens programmet kjører, også komponenter med tilpassede datamodeller og så videre. Koden, komponert i en "brukervennlig" måte kan bli en virkelig mareritt hvis du trenger senere for å fullføre den manuelt. Dermed ikke holde seg til noe "brukervennlig GUI designer" for mye som det vil begrense programmering makt til sine begrensede evner.
  • Swing er en enkelt tråd søknad. Hvis handlingen håndtering tar for mye data tid, vil den "fryse" inntil din. ActionPerformed metoden returnerer. Lære og bruke java multithreading å holde Swing "levende" mens tidkrevende prosess er i gang.
  • De fleste av metodene for de Swing komponenter bare kan trygt kalles fra hendelsen utsending tråden (den som ringer. ActionPerformed og andre lignende lytteren metoder). Hvis du trenger å ringe dem fra noen andre tråden (for eksempel for å oppdatere fremdriftslinjen eller vise resultater av noen langvarig prosess), lese om SwingUtils.invokeLater.

Kildekode

{{Codebox |

 * A very simple java swing application. * En veldig enkel java swing søknad. * Contains button and checkbox. * Inneholder knappen og sjekkheftet. Responds * to manipulations with these controls by * changing text in the main text area. Reagerer * til manipulasjoner med disse kontrollene av * endre tekst i hovedteksten området. * * @author audriusa */ public class Google extends JFrame implements ActionListener { /** * The button. ** @ Author audriusa * / public class Google utvider JFrame implementerer ActionListener {/ *** Knappen. */ JButton myButton = new JButton ( "Button" ) ; /** * The the checkbox. * / JButton myButton = new JButton ("Button"); / *** Den i boksen. */ JCheckBox myCheckBox = new JCheckBox ( "Check" ) ; /** * The text area. * / JCheckBox myCheckBox = new JCheckBox ("Check"); / *** Teksten området. */ JTextArea myText = new JTextArea ( "My text" ) ; /** * The bottom panel which holds button. * / JTextArea myText = new JTextArea («Min tekst"); / *** Den nederste panel som holder knappen. */ JPanel bottomPanel = new JPanel ( ) ; /** * The top level panel which holds all. * / JPanel bottomPanel = new JPanel (); / *** Det øverste nivået panel som holder det hele tatt. */ JPanel holdAll = new JPanel ( ) ; /** * The constructor. * / JPanel Holdall = new JPanel (); / *** Konstruktør. */ public Google ( ) { bottomPanel. setLayout ( new FlowLayout ( ) ) ; bottomPanel. add ( myCheckBox ) ; bottomPanel. add ( myButton ) ; holdAll. setLayout ( new BorderLayout ( ) ) ; holdAll. add ( bottomPanel, BorderLayout. SOUTH ) ; holdAll. add ( myText, BorderLayout. CENTER ) ; getContentPane ( ). add ( holdAll, BorderLayout. CENTER ) ; myButton. addActionListener ( this ) ; myCheckBox. addActionListener ( this ) ; setDefaultCloseOperation ( DISPOSE_ON_CLOSE ) ; } /** * The program * @param args the program start up parameters, not used. * / Public Google () {bottomPanel setLayout (ny FlowLayout ());.. BottomPanel add (myCheckBox);. BottomPanel add (myButton);. Holdall setLayout (ny BorderLayout ());. Holdall add (bottomPanel, BorderLayout SOUTH. );. Holdall add (myText, BorderLayout CENTER);.. getContentPane () legge (Holdall, BorderLayout CENTER);.. myButton addActionListener (denne);. myCheckBox addActionListener (denne); setDefaultCloseOperation (DISPOSE_ON_CLOSE);} / *** Programmet * @ param args programmet starter opp parametere, ikke brukt. * / Public static void main (String [] args) {Google myApplication = new Google (), / / Spesifiser hvor vil det vises på skjermen:. MyApplication setLocation (10, 10), myApplication setSize (300, 300);. / / Vis det myApplication setVisible (true);!.} / *** Hver non abstrakt klasse som implementerer ActionListener * må ha denne metoden. ** @ Param e handlingen hendelsen. * / Public void (ActionEvent e) {if (e. getSource () == myButton) myText setText ("En knapp klikk");. Else if (e. getSource () == myCheckBox) myText setText ("The. boksen tilstand endret til "+ myCheckBox isSelected ()); annet myText setText (.." E... ");}}}} [[pt: criar uma Interface GUI Com Swing ingen Java]]?