Wku

Hur man skapar en swing GUI i java

Först måste du känna till grundläggande java begreppen objekt och gränssnitt. Vi förutsätter att du redan vet detta.

Den här artikeln förklarar hur du skapar enkelt program som visas i figuren till höger, som ger dess källkod också.

För att placera knappar, textetiketter och andra komponenter på programfönstret, måste du förstå om JPanel. Det är en slags behållare för komponenter, upptar vilken det rektangulära stycket på skärmen och visar komponenterna arrangerade på något enkelt sätt. Hur exakt de detaljer sitter beror på vilken layout har du satt på den panelen. För manuell programmering kommer du sannolikt behöver veta åtminstone BorderLayout som placerar fyra delar på sidorna och en stor komponent i mitten, då Flowlayout som vanligtvis arrangerar dem sida vid sida i horisontell rad och slutligen GridLayout som arrangerar komponenter i godtyckliga n * m bord. Det finns mer av dem, men andra verkar alltför komplicerat för nybörjare. Den centrala idén här är att en "komponent" kan vara inte bara en knapp eller kryssruta - det kan också vara en annan JPanel Du kan få ett komplext användargränssnitt genom att bara sätta panelerna en inuti en annan och välja layouter för dem..

När du har en instans av JPanel, ring. SetLayout metoden för att ställa in layout och sedan på. Lägg metoden för att lägga till komponenter till den. För BorderLayout, måste du ge den plats som andra parameter. Till exempel, ring myPanel.add (myButton, BorderLayout.North) för att placera din knapp i överkanten.

Den översta nivån behållare, som visas på skärmen som representerar Java-program, är inte en JPanel men JFrame. Call myJFrame.getContentPane (). Tillsätt (myJPanel, BorderLayout.Center) för att lägga till din huvudsakliga panel till den instans av JFrame.

För att göra din ansökan att göra mer än att bara synas måste du också förstå ActionListener gränssnittet. Varje icke-abstrakt ActionListener har en enda metod, actionPerformed, som kallas automatiskt när användaren gör en "action" med den del som lyssnaren är registrerad (åtgärden med knappen är, naturligtvis, att trycka på den). Att registrera action avlyssnare för knappen eller annan komponent, anropa metoden . addActionListener..

Steg

Hur man skapar en swing GUI i java. Planera den övergripande utformningen av din första ansökan.
Hur man skapar en swing GUI i java. Planera den övergripande utformningen av din första ansökan.

Göra hel bildruta

  1. 1
    Skapa en klass som utökar JFrame klassen. Denna klass kommer att hålla alla dina grafiska komponenter, såsom knappar och textfields.
  2. 2
    Planera den övergripande utformningen av din första ansökan. En bra början kan vara en central panel med BorderLayout med en annan panel i botten (BorderLayout.South). Denna andra panel kan ha FlowLayout och innehåller flera knappar, kryssrutor och andra liknande kontroller. Slutligen, placera den stora JTextArea in i centrum av den centrala komponenten. Du kommer att kunna använda sin gettext () och setText () metoder för att göra en text-baserad interaktion med användaren.
  3. 3
    Skriv en konstruktör till din klass. Denna konstruktören måste skapa alla paneler och komponenter som du planerar, placera dem på rätt sätt in i varandra och lägga den sista panelen på "rymmer allt" till dig frame (myFrame.getContentPane (). Tillsätt (myLargePanel, BorderLayout.Center).
  4. 4
    Skriv den huvudsakliga metoden som kommer att vara programmets ingångspunkten. I denna metod, skapa en instans av din ram, ange det ursprungliga storlek och placering (användning. SetSize (x, y) och. SetLocation (bredd, höjd)) och göra att den ska visas på skärmen genom att ringa. SetVisible (true).

Programmering svar på användarens åtgärder

  1. 1
    Gör din ram genomföra ActionListener gränssnittet. Detta gör att din klass att lyssna på komponenter verksamhet.
  2. 2
    För varje knapp, kryssruta eller annan kontroll som du har skapat, åberopa sin metod. AddActionListener, passerar din ram (detta) som parameter.
  3. 3
    Override ActionListener abstrakta metod, actionPerformed (ActionEvent händelse). I denna metod, bör man sätta om uttalanden kontroll varifrån handlingen händelsen kommer ifrån. Detta if ska ha ett tillstånd som säger något i stil med "om (event.getSource () == button1)". Detta kontrollerar om händelsen kom ifrån och om det kom från din knapp. Inuti if, göra vad som behöver göras när knappen trycks in.
  4. 4
    JTextArea har en metod. SetText ("myText") som verkar bra som ett sätt att programmera några synliga svar på din åtgärd.

Tips

  • Det är inte mycket svårare att genomföra MouseListener gränssnitt och användning. AddMouseListener registrera den för någon komponent.
  • Om du vill dra dina egna grafiska objekt (som schackbräde), läsa om Canvas komponenten. Den kan placeras i din ansökan som alla andra, men du måste skriva metod. Som är fullt ansvarig för att utarbeta denna färg.
  • Om du behöver fråga någon input sträng från användaren, kallar den statiska metoden J OptionPane.showInputDialog (detta, "Mitt budskap"). Den första parametern måste vara din ansökan ram eller någon panel (inmatningsrutan kommer att visas i mitten av föräldern). Metoden returnerar det värde som användaren anger i dialogrutan.
  • I många praktiska tillämpningar den mest användbara Swing komponent är JTable. När du behärskar den grundläggande, gå direkt till den.
  • Det är möjligt att sätta alla komponenter till en enda panel med GridBagLayout, men denna klass är svårare att bemästra.

Varningar

  • Vissa utvecklingsmiljöer erbjuder möjligheten att komponera Swing GUI i ett "användarvänligt" sätt. Men de är ofta inte kan slutföra en panel med avancerade funktioner ordentligt. Sådana funktioner inkluderar träd, tabeller, listor och kombinationsrutor som förändrar de innehåll medan programmet körs, även komponenter med egna datamodeller och så vidare. Koden, som består i ett "användarvänligt" sätt kan bli en riktig mardröm om du behöver senare att avsluta det manuellt. Därför fastnar inte på någon "användarvänliga GUI designer" för mycket eftersom det kommer att begränsa din programmering makten till sin begränsade kapacitet.
  • Swing är en enda tråd ansökan. Om din åtgärd hantering tar för mycket datortid, kommer det "frysa" tills din. ActionPerformed metoden returnerar. Lär dig och använd java multithreading att hålla Swing "levande" medan din tidskrävande process körs.
  • De flesta av de metoder för Swing-komponenter kan bara säkert kallas från händelsen avsändande tråden (den som ringer. ActionPerformed och andra liknande lyssnarmetoder). Om du behöver ringa dem från någon annan tråd (till exempel för att uppdatera förloppsindikatorn eller visa resultat av några långvariga process), läsa om SwingUtils.invokeLater.

Source code

{{Codebox |

 * A very simple java swing application. * En mycket enkel Java Swing ansökan. * Contains button and checkbox. * Innehåller knappen och kryssrutan. Responds * to manipulations with these controls by * changing text in the main text area. Svarar * till manipulationer med dessa kontroller genom * att ändra text i huvudtexten området. * * @author audriusa */ public class Google extends JFrame implements ActionListener { /** * The button. ** @ Author audriusa * / public class Google utökar JFrame implementerar ActionListener {/ *** Knappen. */ JButton myButton = new JButton ( "Button" ) ; /** * The the checkbox. * / JButton myButton = new Button ("knapp"), / *** Den kryssrutan. */ JCheckBox myCheckBox = new JCheckBox ( "Check" ) ; /** * The text area. * / JCheckBox myCheckBox = ny JCheckBox ("Check"), / *** Textområdet. */ JTextArea myText = new JTextArea ( "My text" ) ; /** * The bottom panel which holds button. * / JTextArea myText = ny JTextArea ("Min text"); / *** Den nedre panelen som håller knappen. */ JPanel bottomPanel = new JPanel ( ) ; /** * The top level panel which holds all. * / JPanel bottomPanel = new JPanel (); / *** Den översta nivån panelen som rymmer allt. */ JPanel holdAll = new JPanel ( ) ; /** * The constructor. * / JPanel holdall = new JPanel (); / *** Konstruktorn. */ 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 lägga (myCheckBox). BottomPanel lägga (myButton). Holdall setLayout (ny BorderLayout ());. Holdall lägga (bottomPanel, BorderLayout SOUTH. );. holdall lägga (myText, BorderLayout CENTER),.. getContentPane () lägga (holdall, BorderLayout CENTER),.. myButton addActionListener (this);. myCheckBox addActionListener (this); setDefaultCloseOperation (DISPOSE_ON_CLOSE);} / *** Programmet * @ param args programmet startar parametrar, inte används. * / Public static void main (String [] args) {Google myApplication = ny Google (), / / Ange var kommer den att visas på skärmen:. MyApplication setLocation (10, 10); myApplication setSize (300, 300);. / / Visa den myApplication setVisible (true);!.} / *** Varje icke abstrakt klass som implementerar ActionListener * måste ha den här metoden. ** @ Param e åtgärden händelsen. * / Public void actionPerformed (ActionEvent e) {if (e. getSource () == myButton) myText setText ("En knapp klick"),. Else if (e. getSource () == myCheckBox) myText setText ("The. kryssrutan tillstånd ändras till "+ myCheckBox isSelected ()); annars myText setText (.." E... ");}}}} [[PT: criar uma GUI Com Swing ingen Java]]?