Først skal du nødt til at kende de grundlæggende java begreberne objekt og interface. Vi antager, at du allerede kender dette.
Denne artikel forklarer, hvordan du opretter simpelt program, der vises i figuren til højre, hvilket giver dens kildekode så godt.
For at placere knapperne tekstetiketter og andre komponenter på programvinduet, er du nødt til at forstå om JPanel. Det er en slags beholder til komponenter, som indtager den rektangulært stykke på skærmen og viser komponenterne anbragt i nogle enkle måde. Hvordan præcist komponenterne er arrangeret, afhænger af hvilket layout har du sat til dette panel. For manuel programmering, vil du sandsynligvis nødt til at vide det mindste BorderLayout som placerer fire komponenter i siderne og en stor komponent ind i midten, så FlowLayout som normalt arrangerer dem side om side i vandret række og endelig GridLayout der arrangerer komponenter i vilkårlige n * m bord. Der er flere af dem, men andre synes alt for kompliceret for begyndere. Den centrale idé er, at en "komponent" kan være ikke bare en knap eller afkrydsningsfelt - det kan også være en anden JPanel Du kan få en kompliceret brugerflade ved blot at sætte paneler ene inde i en anden og vælge de layouts for dem..
Når du har en instans af JPanel, kalder. SetLayout metode til at vælge layout og derefter. Føje til at tilføje komponenter til det. For BorderLayout, skal du give placering som en anden parameter. For eksempel kalder myPanel.add (myButton, BorderLayout.North) for at placere din knap på den øverste kant.
Det øverste niveau container, der vises på skærmen som repræsenterer java applikation, ikke er en JPanel men JFrame. Ring myJFrame.getContentPane (). Tilføje (myJPanel, BorderLayout.Center) for at tilføje dine vigtigste panel til forekomst af JFrame.
For at gøre din ansøgning at gøre mere end bare synes du også nødt til at forstå ActionListener interface. Enhver ikke-abstrakt ActionListener har en enkelt metode, actionPerformed, som kaldes automatisk, når brugeren foretager en "handling" med komponenten, hvor lytteren er registreret (handlingen med knappen er naturligvis trykke på den). For at registrere handling lytteren til knappen eller anden komponent, kalder metoden . addActionListener..
Steps
Realiseringen af den samlede ramme
- 1Opret en klasse, der udvider JFrame klassen. Denne klasse vil holde alle dine GUI komponenter, såsom knapper og tekstfelter.
- 2Planlæg det overordnede layout af dit første ansøgning. En god start kunne være et centralt panel med BorderLayout med et andet panel i bunden (BorderLayout.South). Denne anden panel kan have FlowLayout og indeholder flere knapper, afkrydsningsfelter og andre lignende kontroller. Endelig placere store JTextArea ind til centrum af den centrale komponent. Du vil være i stand til at bruge sin getText () og setText () metoder til at gøre nogle tekstbaseret interaktion med brugeren.
- 3Skriv konstruktør til din klasse. Denne konstruktør skal skabe alle paneler og komponenter, du planlægger, placere dem ordentligt ind i hinanden og tilsæt den sidste panel på "besidder alle" til dig frame (myFrame.getContentPane (). Tilføje (myLargePanel, BorderLayout.Center).
- 4Skriv den vigtigste metode, som vil være programmets indgang. I denne metode, en instans af din ramme oprette, indstille den indledende størrelse og placering (brug. SetSize (x, y) og. SetLocation (bredde, højde)), og gøre det til at blive vist på skærmen ved at kalde. SetVisible (sand).
Programmering svar på brugerens handlinger
- 1Gør din ramme implementere ActionListener interface. Dette vil give din klasse til at lytte til komponenter aktiviteter.
- 2For hver knap, et afkrydsningsfelt eller anden kontrol, som du har oprettet, påberåbe sig sin metode. AddActionListener, der passerer din ramme (dette) som parameter.
- 3Override ActionListener abstrakte metode actionPerformed (ActionEvent begivenhed). I denne metode, bør du sætte hvis udsagn kontrol hvor kommer handlingen begivenheden kommer fra. Dette, hvis erklæring bør have en tilstand, der siger noget lignende ", hvis (event.getSource () == Button1)". Dette kontrollerer hvor begivenheden kom fra, og hvis det kom fra din knap. Inde i if-sætningen. Gøre, hvad der skal gøres, når din trykkes
- 4JTextArea har en metode. SetText ("myText"), som synes godt som vejen til at programmere nogle synlige reaktion på din handling.
Tips
- Det er ikke meget sværere at gennemføre MouseListener interface og brug. AddMouseListener at registrere det for enhver komponent.
- Hvis du ønsker at tegne dine egne grafiske objekter (som skakbræt), læse om Canvas komponent. Den kan placeres i din ansøgning som alle andre, men du har brug for at skrive metoden. Maling, som er fuldt ud ansvarlig for at tegne den.
- Hvis du har brug for at stille nogle input string fra brugeren, kalder den statiske metode J OptionPane.showInputDialog (dette "Mit budskab"). Den første parameter skal være din ansøgning stel eller nogle panel (indtastningsfeltet vises i midten af modervirksomheden). Metoden returnerer den værdi, som brugeren indtaster i dialogboksen.
- I mange praktiske anvendelser de mest nyttige Swing komponent er JTable. Når du mestrer det grundlæggende, gå direkte til det.
- Det er muligt at sætte alle komponenter i enkelt panel med GridBagLayout, men denne klasse er sværere at mestre.
Advarsler
- Nogle udviklingsmiljøer giver mulighed for at komponere Swing GUI i en "brugervenlig" måde. Men de er ofte ikke i stand til at fuldføre et panel med avancerede funktioner korrekt. Sådanne funktioner omfatter træer, borde, lister og kombinationsbokse, der ændrer de indhold, mens programmet kører, også komponenter med brugerdefinerede datamodeller og så videre. Koden, der består i en "brugervenlig" måde kan blive et mareridt, hvis du har brug for senere at afslutte det manuelt. Derfor behøver ikke holde sig til nogen "brugervenlig GUI designer" for meget, da det vil begrænse din programmering magt til dens begrænsede kapacitet.
- Swing er en enkelt tråd ansøgning. Hvis din handling håndtering tager for meget computing tid, vil det "fryse" indtil din. ActionPerformed metoden returnerer. Lære og bruge java multithreading at holde Swing "levende", mens din tidskrævende proces kører.
- De fleste af de metoder af swing bestanddele kan kun sikkert kaldt fra begivenheden forsendelse tråd (den, der kalder. ActionPerformed og andre lignende lytterens metoder). Hvis du har brug for at ringe til dem fra en anden tråd (f.eks at opdatere statuslinjen eller vise resultater af nogle langvarige proces), læse om SwingUtils.invokeLater.
Kildekode
{{Codebox |
* A very simple java swing application. * En meget simpelt Java swing ansøgning. * Contains button and checkbox. * Indeholder knappen og afkrydsningsfelt. Responds * to manipulations with these controls by * changing text in the main text area. Reagerer * til manipulationer med disse kontroller af * ændre tekst i hovedteksten området. * * @author audriusa */ public class Google extends JFrame implements ActionListener { /** * The button. ** @ Forfatter audriusa * / public class Google udvider JFrame implementerer ActionListener {/ *** Knappen. */ JButton myButton = new JButton ( "Button" ) ; /** * The the checkbox. * / JButton myButton = new JButton ("Button") / *** Det afkrydsningsfeltet. */ JCheckBox myCheckBox = new JCheckBox ( "Check" ) ; /** * The text area. * / JCheckBox myCheckBox = new JCheckBox ("Check") / *** Teksten område. */ JTextArea myText = new JTextArea ( "My text" ) ; /** * The bottom panel which holds button. * / JTextArea myText = new JTextArea ("My text") / *** Det nederste panel, der holder knappen. */ JPanel bottomPanel = new JPanel ( ) ; /** * The top level panel which holds all. * / JPanel bottomPanel = new JPanel () / *** Det øverste niveau panel, som besidder alle. */ JPanel holdAll = new JPanel ( ) ; /** * The constructor. * / JPanel Holdall = new JPanel () / *** Konstruktøren. */ 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 tilføje (bottomPanel, BorderLayout SYD. ). Holdall tilføje (myText, BorderLayout CENTER).. getContentPane () tilføje (Holdall, BorderLayout CENTER).. myButton addActionListener (dette). myCheckBox addActionListener (dette) setDefaultCloseOperation (DISPOSE_ON_CLOSE);} / *** Programmet * @ param args programmet opstart parametre, ikke brugt. * / Public static void main (String [] args) {Google myApplication = new Google () / / Angiv hvor vil det vises på skærmen:. MyApplication setLocation (10, 10), myApplication setSize (300, 300);. / / Vis det myApplication setVisible (sand),!.} / *** Hver ikke abstrakt klasse, der implementerer ActionListener * skal have denne metode. ** @ Param e handlingen begivenhed. * / Public void actionPerformed (ActionEvent e) {if (e. getSource () == myButton) myText setText ("A knap klik"). Else if (e. getSource () == myCheckBox) myText setText ("The. afkrydsningsfeltet state ændret til "+ myCheckBox isSelected ()); ellers myText setText (.." E... ");}}}} [[pt: Criar uma interface GUI Com Swing ingen Java]]?