Java Swing Tutorial: Hoe maak je een GUI-applicatie in Java

Wat is swing op Java?

Swing op Java is een grafische gebruikersinterface (GUI)-toolkit die de GUI-componenten bevat. Swing biedt een uitgebreide reeks widgets en pakketten om geavanceerde GUI-componenten voor Java-toepassingen te maken. Swing is een onderdeel van Java Foundation Classes (JFC), een API voor Java GUI-programmering die GUI biedt.

De Java Swing bibliotheek is gebouwd bovenop de Java Abstract Widget Toolkit (AWT), een oudere, platformafhankelijke GUI-toolkit. U kunt de eenvoudige Java-GUI-programmeercomponenten zoals knop en tekst gebruikenbox, enz., uit de bibliotheek en hoeven de componenten niet helemaal opnieuw te maken.

In deze Java Swing tutorial, leer je de basisprincipes van Java GUI, zoals-

Java Swing klasse hiërarchiediagram

Java Swing Klassenhiërarchiediagram
Java Swing Klassenhiërarchiediagram

Alle componenten in Java Swing zijn JComponent die aan containerklassen kunnen worden toegevoegd.

Wat is een containerklasse?

Containerklassen zijn klassen die andere componenten kunnen bevatten. Dus voor het maken van een Java Swing GUI, we hebben minimaal één containerobject nodig. Er zijn 3 soorten Java Swing containers.

  1. Paneel: Het is een pure container en is geen venster op zichzelf. Het enige doel van een paneel is om de componenten in een venster te ordenen.
  2. Inlijsting: Het is een volledig functionerend venster met zijn titel en pictogrammen.
  3. Dialoog: Het kan worden gezien als een pop-upvenster dat verschijnt wanneer een bericht moet worden weergegeven. Het is geen volledig functionerend venster zoals het Frame.

Wat is GUI in Java?

GUI (grafische gebruikersinterface) in Java is een eenvoudig te gebruiken visuele ervaringsbouwer voor Java-toepassingen. Het bestaat voornamelijk uit grafische componenten zoals knoppen, labels, windows, etc. waarmee de gebruiker kan communiceren met een applicatie. GUI speelt een belangrijke rol bij het bouwen van eenvoudige interfaces voor Java-applicaties.

Hoe maak je een GUI in Java met voorbeeld

Laten we nu in deze Java GUI-zelfstudie begrijpen hoe we een GUI in Java kunnen maken met Swings in Java-voorbeelden.

Stap 1) Kopieer code naar een editor
Kopieer in de eerste stap het volgende bestandwing code in een editor.

import javax.swing.*;
class gui{
    public static void main(String args[]){
       JFrame frame = new JFrame("My First GUI");
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       frame.setSize(300,300);
       JButton button = new JButton("Press");
       frame.getContentPane().add(button); // Adds Button to content pane of frame
       frame.setVisible(true);
    }
}

Stap 2) Voer de code uit
Volgende stap: de code opslaan, compileren en uitvoeren

Stap 3) Kopieer volgwing code in een editor
Laten we nu een knop aan ons frame toevoegen. Kopieer volgwing code in een editor vanuit een gegeven Java UI-voorbeeld

import javax.swing.*;
   class gui{
      public static void main(String args[]){
        JFrame frame = new JFrame("My First GUI");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300,300);
       JButton button1 = new JButton("Press");
       frame.getContentPane().add(button1);
       frame.setVisible(true);
     }
}


Stap 4) Voer de code uit
Voer vervolgens de code uit. Je krijgt een grote knop.


Java GUI-voorbeeld

Stap 5) Voeg twee knoppen toe
Hoe zit het met het toevoegen van twee knoppen? Kopieer het volgendewing code in een editor.

import javax.swing.*;
class gui{
      public static void main(String args[]){
           JFrame frame = new JFrame("My First GUI");
           frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
           frame.setSize(300,300);
          JButton button1 = new JButton("Button 1");
          JButton button2 = new JButton("Button 2");
          frame.getContentPane().add(button1);
          frame.getContentPane().add(button2);
          frame.setVisible(true);
     }
}

Stap 6) Bewaar en voer het programma uit
Vervolgens slaat u het programma op, compileert u het en voert u het uit.

Stap 7) Controleer de uitvoer
Onverwachte uitvoer =? Knoppen gaan elkaar overlappen.

Java-layoutmanager

De Layout Manager wordt gebruikt om de GUI Java-componenten in een container op te maken (of te rangschikken). Er zijn veel lay-outmanagers, maar de meest gebruikte zijn:

Java BorderLayout

A BorderLayout plaatst componenten in maximaal vijf gebieden: boven, onder, links, rechts en midden. Het is de standaard layoutmanager voor elk Java JFrame

Java BorderLayout
Java BorderLayout

Java FlowLayout

FlowLayout is de standaard lay-outmanager voor elk JPanel. Het legt de componenten eenvoudigweg in een enkele rij achter elkaar neer.

Java FlowLayout
Java FlowLayout

Java GridBagLayout

Het is de meest geavanceerde van alle lay-outs. Het lijnt componenten uit door ze in een raster van cellen te plaatsen, allowing componenten die meer dan één cel bestrijken.

Java GridBagLayout
Java GridBagLayout

Stap 8) Chatframe maken
Wat dacht je van het maken van een chatframe zoals hieronder?


Voorbeeld van Java-GUI

Probeer zelf te coderen voordat u het onderstaande programma bekijkt.

//Usually you will require both swing and awt packages
// even if you are working with just swings.
import javax.swing.*;
import java.awt.*;
class gui {
    public static void main(String args[]) {

        //Creating the Frame
        JFrame frame = new JFrame("Chat Frame");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 400);

        //Creating the MenuBar and adding components
        JMenuBar mb = new JMenuBar();
        JMenu m1 = new JMenu("FILE");
        JMenu m2 = new JMenu("Help");
        mb.add(m1);
        mb.add(m2);
        JMenuItem m11 = new JMenuItem("Open");
        JMenuItem m22 = new JMenuItem("Save as");
        m1.add(m11);
        m1.add(m22);

        //Creating the panel at bottom and adding components
        JPanel panel = new JPanel(); // the panel is not visible in output
        JLabel label = new JLabel("Enter Text");
        JTextField tf = new JTextField(10); // accepts upto 10 characters
        JButton send = new JButton("Send");
        JButton reset = new JButton("Reset");
        panel.add(label); // Components Added using Flow Layout
        panel.add(tf);
        panel.add(send);
        panel.add(reset);

        // Text Area at the Center
        JTextArea ta = new JTextArea();

        //Adding Components to the frame.
        frame.getContentPane().add(BorderLayout.SOUTH, panel);
        frame.getContentPane().add(BorderLayout.NORTH, mb);
        frame.getContentPane().add(BorderLayout.CENTER, ta);
        frame.setVisible(true);
    }
}