Så här skapar du en GUI med Swing i Java
I den här artikeln kommer du att lära dig hur du skapar en applikation som liknar den som visas i figuren. Dessutom kommer du att få källkoden.
För att infoga knappar, etiketter och andra komponenter i programfönstret måste du först studera dig själv JPanel. JPanel är ett slags behållare av komponenter, vilket tar upp utrymme i fönstret och organiserar visuellt de komponenter du har bestämt att använda. Hur exakt dessa komponenter är ordnade beror på den layout du tilldelade panelen. För att programmera manuellt måste du studera minst Border, som positionerar fyra komponenter på sidorna och en komponent i mitten, då måste du studera FlowLayout, som istället ordnar komponenterna i horisontella rader och slutligen Gridlayout, vilken placerar komponenterna i en godtycklig tabell n *. Det finns också andra, men de kan vara för komplexa för nybörjaren, och kommer därför inte att listas. Det grundläggande begreppet som du måste förstå är att a "komponent" Det kan inte bara vara en knapp eller en kryssruta, men också en annan "JPanel". Så genom att placera paneler inuti varandra och välja en layout för var och en av dem kan du skapa ett mycket komplext användargränssnitt. Efter att ha skapat en instans av "JPanel", använd metoden ".setLayout" för att ställa in layouten och sedan använda ".add" att lägga till komponenter. För "Border", måste du också ställa in koordinater som en andra parameter. Till exempel, ring "myPanel.add (myButton, BorderLayout.North)" att placera en knapp i övre hörnet. Behållaren "översta nivån", som visas på skärmen som representerar Java-programmet, är inte en "JPanel" men a "JFrame". samtal "myJFrame.getContentPanel (). add (myJPanel, BorderLayout.Center)" för att lägga till panelen "huvud" all`instanza "JFrame". För att se till att din ansökan, förutom att visas på skärmen, gör ännu mer måste du studera gränssnittet "Action". någon "Action" inte abstrakt har sin metod, "actionPerformed", som kallas automatiskt när användaren gör en"åtgärd" i den komponent på vilken "lyssnaren" (åtgärden, vad gäller knapparna är till exempel tryck på knappen). För att registrera en lyssnare för en knapp eller annan komponent, använd metoden .addActionListener..
steg
Metod 1
Skapa huvudramenMetod 2
Program svar på en åtgärd av användarentips
- Om du vill lära dig att rita dina egna grafiska objekt (som ett schackbräde), studera komponenten målarduk. Den senare kan placeras i din ansökan precis som någon annan, men du måste använda funktionen .paint, som är ansvarig för att dra komponenten på skärmen.
- En användbar Swing-komponent i många praktiska tillämpningar är JTable. Efter att ha läst grunderna, studera det direkt.
- Implementera och använd gränssnittet "MoustListener" det är inte mycket svårare än det som hittills har förklarats. Sätt."addMouseListener" att registrera det på varje komponent.
- Om du vill att ditt program ska be om en inmatad textsträng, använd den statiska J-funktionenOptionPane.showInputDialog (detta, "meddelande"). Den första parametern ska vara ramen för själva appen eller en panel (inmatningsrutan kommer att visas mitt på huvudpanelen). Den här funktionen returnerar det värde som användaren anger i dialogrutan.
- Du kan sätta alla komponenter i en enda panel med hjälp av "GridBagLayout", men den här klassen är svårare att lära sig.
varningar
- Vissa utvecklingsmiljöer gör att du kan komponera Swing GUI-metoder "användarvänlig". Men de här programmen tillåter inte att du korrekt skapar en panel med komplexa funktioner. Bland dessa funktioner ingår träd, tabeller, listor, kombinationsrutor som ändrar innehållet medan programmet körs och även komponenter med egna datamodeller och så vidare. Koden, ursprungligen sammansatt på ett sätt "användarvänlig", det kan bli en riktig mardröm när du senare behöver ändra den och / eller slutföra den manuellt. Så, bli inte för van vid dessa GUI designprogram, annars kommer du allvarligt att begränsa dina chanser för programmeraren.
- Swing är en enda tråd applikation. Om hanteringen av åtgärderna kräver för mycket beräknatid kommer det att sluta tills du returnerar metoden ".actionPerformed". Lär dig att använda Java i multithreading för att hålla dig vid liv "gunga" och använda resursintensiva processer samtidigt.
- De flesta metoderna för Swing-komponenter kan kallas säkert av Event Dispatching Thread (vad det kallar ".actionPerformed" och andra liknande metoder). Om du behöver ringa dessa metoder från en annan tråd (t.ex. för att uppdatera en statusfält eller visa resultatet av en lång process), studera metoden "SwingUtils.invokeLater".
Källkod
{{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 .JFrame-import javax.swing.JPanel-import javax.swing.JTextArea - / *** Java-program mycket enkelt * Innehåller knappar och kryssrutor. * * Reagerar på interaktionen med kontrollerna genom att ändra den text som visas i det viktigaste området. ** @autorer audriusa * / public class wikiHow sträcker JFrameimplements Action {/ *** Knappen. * / JButtonmyButton = new JButton ("knapp") - / *** Avkryssningsrutan. * / JCheckBoxmyCheckBox = ny JCheckBox ("check") - / *** Textområdet * / JTextAreamyText = nytt JTextArea ("Min text") - / *** Den undre panelen, som innehåller knappen * / JPanelbottomPanel = new JPanel () -. / *** Den övre panelen, som innehåller hela * / JPanelholdAll = new JPanel () -. / *** konstruktören * / public wikiHow () {bottomPanel.setLayout (ny FlowLayout ()) -. bottomPanel.add (myCheckBox) -bottomPanel.add (myButton) -holdAll.setLayout (ny Border ()) - holdAll.add (bottomPanel, . BorderLayout.SOUTH) -holdAll.add (myText, BorderLayout.CENTER) -getContentPane () sätt (holdall, BorderLayout.CENTER) -myButton.addActionListener (detta) -myCheckBox.addActionListener (detta) -setDefaultCloseOperation (DISPOSE_ON_CLOSE) -} / *** Programmet * @paramde definierar programmets startparametrar. . Inte används * / public static void main (String [] args) {wikiHow myApplication = new wikiHow () - // Ange vilka visas på schermo.myApplication.setLocation (10, 10) -myApplication.setSize (300, 300) - // Visa det myApplication.setVisible (true) -..} / *** Varje icke-abstrakt klass som implementerar Action * bör använda denna metod ** @parame åtgärden händelsen * / public void actionPerformed (ActionEvente) {if (e. getSource () == myButton) myText.setText ("En knapp klickar") -else om (e.getSource () == myCheckBox) myText.setText ("Statusen för kryssrutan har ändrats till + myCheckBox.isSelected ()) - elsemyText.setText ("Och ...?") -}}}}
- Så här aktiverar du Java i Firefox
- Så här aktiverar du ytterligare komponenter (lägg till)
- Så här aktiverar du plugins
- Så här uppdaterar du Firefox-tillägg
- Så här lägger du till rader i Microsoft Word
- Så här ansluter du en plasma-tv
- Så här ansluter du kablar och komponenter till en platt-tv
- Så här kontrollerar du datatemperaturen
- Så här kontrollerar du systeminformation
- Hur man bygger en ekonomisk dator
- Hur man skapar de bästa kombinationerna av vapen i Dead Space 3
- Hur man skapar ett histogram i Excel
- Så här tar du bort ett flertal urval av vänner från Facebook
- Så här skapar du ditt första Java-program i Ubuntu Linux
- Så här skapar du ett GUI-nät i Java
- Så här installerar du Android på Ubuntu Linux med Eclipse IDE
- Så här installerar du ytterligare komponenter till Internet Explorer
- Så här installerar du ett nätaggregat
- Hur man bryter ner en bärare i sina komponenter
- Hur man lägger till och subtraherar vektorer
- Så här använder du S videokabel korrekt