Java Swing Tutorial: Sådan opretter du en GUI-applikation i Java

Hvad er Swing in Java?

Sving ind Java er et grafisk brugergrænseflade (GUI) værktøjssæt, der inkluderer GUI-komponenterne. Swing giver et rigt sæt widgets og pakker til at lave sofistikerede GUI-komponenter til Java applikationer. Swing er en del af Java Foundation Classes(JFC), som er en API til Java GUI-programmering, der giver GUI.

Java Swing bibliotek er bygget oven på Java Abstrakt widget-værktøjssæt (AWT), et ældre, platformsafhængigt GUI-værktøjssæt. Du kan bruge Java simple GUI-programmeringskomponenter som knap, tekstboks osv., fra biblioteket og behøver ikke at oprette komponenterne fra bunden.

I denne Java Swing tutorial, vil du lære Java GUI basics som-

Java Swing klasse Hierarkidiagram

Java Swing Class Hierarki Diagram
Java Swing Class Hierarki Diagram

Alle komponenter i Java Swing er JComponent, som kan tilføjes til containerklasser.

Hvad er en containerklasse?

Containerklasser er klasser, der kan have andre komponenter på. Så for at skabe en Java Swing GUI, vi har brug for mindst ét ​​containerobjekt. Der er 3 typer Java Gyngecontainere.

  1. Panel: Det er en ren beholder og er ikke et vindue i sig selv. Det eneste formål med et panel er at organisere komponenterne på et vindue.
  2. Frame: Det er et fuldt fungerende vindue med dets titel og ikoner.
  3. dialog: Det kan opfattes som et pop-up vindue, der popper ud, når en besked skal vises. Det er ikke et fuldt fungerende vindue som Frame.

Hvad er GUI i Java?

GUI (Graphical User Interface) i Java er en brugervenlig visuel oplevelsesbygger til Java applikationer. Det er hovedsageligt lavet af grafiske komponenter som knapper, etiketter, vinduer osv., hvorigennem brugeren kan interagere med en applikation. GUI spiller en vigtig rolle at bygge nemme grænseflader til Java applikationer.

Sådan laver du en GUI i Java med Eksempel

Nu i dette Java GUI Tutorial, lad os forstå, hvordan man opretter en GUI i Java med gynger ind Java eksempler.

Trin 1) Kopier kode til en editor
I første trin Kopier følgende kode ind i en 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);
    }
}

Trin 2) Kør koden
Næste trin: Gem, kompilér og kør koden

Trin 3) Kopier følgende kode ind i en editor
Lad os nu tilføje en knap til vores ramme. Kopier følgende kode ind i en editor fra givet Java UI eksempel

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);
     }
}


Trin 4) Udfør koden
Udfør derefter koden. Du får en stor knap.


Java GUI eksempel

Trin 5) Tilføj to knapper

Hvad med at tilføje to knapper? Kopier følgende kode ind i en 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);
     }
}

Trin 6) Gem og kør programmet
Dernæst, Gem, kompilér og kør programmet.

Trin 7) Tjek output
Uventet output =? Knapperne overlapper hinanden.

Java Layout Manager

Layoutmanageren bruges til at layoute (eller arrangere) GUI'en Java komponenter inde i en beholder. Der er mange layoutmanagere, men de mest brugte er-

Java Border Layout

A BorderLayout placerer komponenter i op til fem områder: top, bund, venstre, højre og center. Det er standard layout manager for hver java JFrame

Java Border Layout
Java Border Layout

Java FlowLayout

FlowLayout er standard layoutmanager for hver JPanel. Den lægger simpelthen komponenter ud i en enkelt række efter hinanden.

Java FlowLayout
Java FlowLayout

Java GridBagLayout

Det er det mere sofistikerede af alle layouts. Det justerer komponenter ved at placere dem i et gitter af celler, så komponenter kan strække sig over mere end én celle.

Java GridBagLayout

Java GridBagLayout

Trin 8) Opret chatramme
Hvad med at oprette en chatramme som nedenfor?


Eksempel Java GUI

Prøv at kode dig selv, før du ser på programmet nedenfor.

//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);
    }
}