So erstellen Sie eine GUI-App in Java
Überblick
In Java werden Swings zum Erstellen einer GUI-Anwendung verwendet. Es verfügt über verschiedene Funktionen und wird häufig zum Erstellen von GUI-Anwendungen in Java verwendet. In diesem Artikel behandeln wir alles über die Swing-Bibliothek in Java.
Java-Swing
Swing wurde in reinem Java entwickelt. Die Schaukelkomponenten können auf allen Plattformen das gleiche Erscheinungsbild haben und ein steckbares Erscheinungsbild bieten. Die Schaukelkomponenten sind leichtgewichtig.
Beispiel:
Ein Java-Programm zum Anzeigen eines Motivs und eines Rahmens
import javax.swing.*;
Klasse F1 erweitert JFrame{
F1() {
setSize(200,200);
setTitle(“GUI DEMO”);
setLocation(100,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String args[]){
F1 f= neues F1();
}
}
Ausgang:
javac F1.java
Java F1
Containerhierarchie
Container der obersten Ebene:
- Platz für andere Schaukelkomponenten, um sich selbst zu bemalen
- Z.B. JFrame, JDialog, JApplet
- Vereinfachen Sie die Positionierung atomarer Komponenten
- ZB JPanel, JSplitPane, JTabbedPane
- Autarke Komponenten, die dem Benutzer Informationen präsentieren und Eingaben von ihm entgegennehmen
- Zum Beispiel JButton, JLabel, JComboBox, JTextField, JTable
- JButton ist eine Implementierung eines „Push“-Buttons
- Schaltflächen können konfiguriert und bis zu einem gewissen Grad durch Aktionen gesteuert werden
- Mit JOptionPane können Sie ganz einfach ein Standarddialogfeld öffnen, das Benutzer zur Eingabe eines Werts auffordert oder sie über etwas informiert.
- Während die Klasse aufgrund der großen Anzahl an Methoden komplex erscheinen mag, handelt es sich bei fast allen Verwendungszwecken dieser Klasse um einzeilige Aufrufe einer der unten gezeigten statischen Methoden :
So wie eine Klasse Variablen und Methoden als Mitglieder haben kann, kann die Klasse auch eine andere Klasse enthalten, die als verschachtelte Klasse bezeichnet wird.
Das Konzept der inneren Klassen wurde in Java 1.1 eingeführt
Die Verwendung innerer Klassen bietet mehrere Vorteile:
- Machen Sie Ihren Code lesbarer
- Ermöglicht die Kapselung von Dienstprogrammklassen innerhalb der Klasse, die sie verwendet
- Vereinfachung des Prozesses des Schreibens einer Klasse, wodurch Entwickler tatsächlich dazu ermutigt werden, objektorientierter zu sein.
Die Arten der inneren Klasse sind wie folgt:
- Die innere Klasse des Mitglieds
- Statische innere Klasse
- Die lokale innere Klasse
- Die anonyme Klasse
Ereignisbehandlung mithilfe der inneren Mitgliedsklasse:
import javax.swing.*;
java.awt.* importieren;
import java.awt.event.*;
Klasse M1 erweitert JFrame
{
Behälter c;
JButton b1, b2;
Klasse L1 implementiert ActionListener
{
public void actionPerformed(ActionEvent ae){
if(ae.getSource()==b1)
{
JOptionPane.showMessageDialog(c, „Sie haben auf Schaltfläche 1 geklickt“);
}
if(ae.getSource()==b2)
{
JOptionPane.showMessageDialog(c“,Sie haben auf Schaltfläche 2 geklickt“);
}
}
}
M1()
{
c=getContentPane();
c.setLayout(new FlowLayout());
b1=new JButton(“Click 1”);
b2= new JButton(“Click 2”);
c.add(b1);
c.add(b2);
L1 a= neues L1();
b1.addActionListener(a);
b2.addActionListener(a);
}
public static void main(String args[]){
M1 f= neues M1();
f.setSize(200,200);
f.setTitle(“Button Click”);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
Layoutmanager
Der Layout-Manager von Java bestimmt, wie Komponenten angeordnet werden, wenn sie dem Frame hinzugefügt werden. Das AWT-Paket enthält die folgenden Layoutklassen:
- FlowLayout
- BorderLayout
- Gitterstruktur
FlowLayout
Ein Flusslayout ordnet Komponenten in einem gerichteten Fluss an, ähnlich wie Textzeilen in einem Absatz, bis kein Platz mehr vorhanden ist, und wechselt dann in die nächste Zeile.
Standardmäßig sind die Komponenten zentriert. Der Programmierer kann die Ausrichtung mithilfe eines der folgenden Argumente mit dem Konstruktor angeben:
- FlowLayout.LEFT
- FlowLayout.CENTER
- FlowLayout.RIGHT
Ein Randlayout legt einen Container an und ordnet seine Komponenten so an, dass sie in fünf Regionen passen: Norden, Süden, Osten, Westen und Mitte.
Jede Region darf nicht mehr als eine Komponente enthalten und wird durch eine entsprechende Konstante definiert: NORTH, SOUTH, EAAST, WEST und CENTER.
Der Programmierer kann die Region wie folgt in der Add-Methode angeben:
- add(“Norden”, b1);
- add(„Süd“,b2);
- add(“Osten”,b3);
- add(„West“,b4);
- add(“Center”,b5);
- add(BorderLayout.NORTH,b1);
- add(BorderLayout.SOUTH,b2);
- add(BorderLayout.EAST,b3);
- add(BorderLayout.WEST,b4);
- add(BorderLayout.CENTER,b5);
Hinweis 2 : Die Kompilierung schlägt fehl, wenn der Konstantenname nicht wie gezeigt in Großbuchstaben geschrieben ist.
Hinweis 3 : Obiges kann auch kombiniert werden.
JLabel
JLabel ist ein Anzeigebereich für eine kurze Textzeichenfolge oder ein Bild oder beides. Ein Label reagiert nicht auf Eingabeereignisse.
Programm:
java.awt.* importieren;
import javax.swing.*;
import java.awt.event.*;
Klasse S2 erweitert JFrame{
Behälter c;
JTextField txt1;
JButton btn1;
JLabel lbl1, lbl2;
S2(){
c=getContentPane();
c.setLayout(new FlowLayout());
lbl1= new JLabel(“Geben Sie eine Zahl ein”);
txt1= neues JTextField(10);
btn1= new JButton(“Answer”);
lbl2= neues JLabel();
c.add(lbl1);
c.add(txt1);
c.add(btn1);
c.add(lbl2);
btn1.addActionListener(new L2());
}
public static void main(String args[]){
S2 frm= new S2();
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setSize(250,150);
frm.setTitle(“Quadratfinder”);
frm.setVisible(true);
}
Klasse L2 implementiert ActionListener{
public void actionPerformed(ActionEvent ae){
versuchen{
int a= Integer.ParseInt(txt1.getText());
float s= a*a;
lbl2.setText(“Square=”+s);
}
Catch(NumberFormatException e){
JOptionPane.showMessageDialog(c“,Bitte geben Sie eine Ganzzahl ein“);
txt1.setText(“ „);
txt1.requestFocus();
}
}
}
}
Umgang mit wichtigen Board-Ereignissen
Programm:
java.awt.* importieren;
import javax.swing.*;
import java.awt.event.*;
Klasse S7 erweitert JFrame{
Behälter c;
JTextField txt1;
JButton btn1;
JLabel lbl1,lbl2;
S7(){
c=getContentPane();
c.setLayout(new FlowLayout());
lbl1= new JLabel(“Geben Sie eine Zahl ein”);
txt1= neues JTextField(10);
btn1= new JButton(“Answer”);
lbl2= neues JLabel();
c.add(lbl1);
c.add(txt1);
c.add(btn1);
c.add(lbl2);
btn1.addActionListener(new L2());
btn1.addKeyListener(new L3());
}
public static void main(String args[]){
S7 frm= new S7();
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setSize(250,150);
frm.setTitle(“Quadratfinder”);
frm.setVisible(true);
}
Klasse L3 implementiert KeyListener
{
public void keyPressed(KeyEvent ke)
{
if(ke.getKeyCode()==KeyEvent.VK_ENTER);
versuchen{
int a= Integer.parseInt(txt1.getText());
float s= a*a;
lbl2.setText('Square='+s');
}
Catch(NumberFormatException e){
JOptionPane.showMessageDialog(c“,Bitte geben Sie eine Ganzzahl ein“);
txt1.setText(“”);
txt1.requestFocus();
lbl2.setText(“”);
}
}
}
public void keyReleased(KeyEvent ke){}
public void keyTyped(KeyEvent ke){}
}
Klasse L2 implementiert ActionListener{
public void actionPerformed(ActionEvent ae){
versuchen{
int a= Integer.parseInt(txt1.getText());
float s=a*a;
lbl2.setText(“Square=”+s);
}
Catch(NumberFormatExcepption e){
JOptionPane.showMessageDialog(c“,Bitte geben Sie eine Ganzzahl ein“);
txt1.setText(“”);
txt1.requestFocus();
lbl2.setText(“”);
}
}
}
}
Umgang mit Windows-Ereignissen
Programm :
java.awt.* importieren;
import javax.swing.*;
import java.awt.event.*;
Klasse S8 erweitert JFrame{
Behälter c;
JTextField txt1;
JButton btn1;
JLabel lbl1,lbl2;
S8(){
c=getContentPane();
c.setLayout(new FlowLayout());
lbl1= new JLabel(“Geben Sie eine Zahl ein”);
txt1= neues JTextField(10);
btn1= new JButton(“Answer”);
lbl2= neues JLabel();
c.add(lbl1);
c.add(txt1);
c.add(btn1);
c.add(lbl2);
btn1.addActionListener(new L2());
btn1.addKeyLisener(new L3());
this.addWindowListener(new L4());
}
public static void main(String args[]){
S8 frm= new S8();
frm.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frm.setSize(250,150);
frm.setTitle(“Quadratfinder”);
frm.setVisible(true);
}
Klasse L4 implementiert WindowListener{
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
public void windowOpened(WindowEvent e){
JOptionPane.showMessageDialog(c“,Willkommen beim Quadratrechner“);
}
public void windowClosed(WindowEvent e){}
public void windowClosing(WindowEvent e){
int output= JOptionPane.showConfirmDialog(c“,Möchten Sie beenden“);
if(output==JOptionPane.YES_OPTION){
System.exit(1);
}
}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
}
Klasse L2 implementiert ActionListener{
public void actionPerformed(ActionEvent ae){
versuchen{
int a=Integer.parseInt(txt1.getText());
float s=a*a;
lbl2.setText(“Square=”+s);
}
Catch(NumberFormatException e){
JOptionPane.showMessageDialog(c“,Bitte geben Sie eine Ganzzahl ein“);
txt1.setText(“”);
txt1.requestFocus();
lbl2.setText(“”);
}
}
}
Klasse L3 implementiert KeyListener{
public void keyPressed(KeyEvent ke){
if(ke.getKeyCode()==KeyEvent.VK_ENTER){
versuchen{
int a= Integer.parseInt(txt1.getText());
float s=a*a;
lbl2.setText(“Square=”+s);
}
Catch(NumberFormatException e){
JOptionPane.showMessageDialog(c“,Bitte geben Sie eine Ganzzahl ein“);
txt1.setText(“”);
txt1.requestFocus();
lbl2.setText(“”);
}
}
}
public void keyReleased(KeyEvent ke){}
public void keyTyped(KeyEvent ke){}
}
}
Abschluss
Swing wurde in reinem Java entwickelt und ist weit verbreitet, da es auf allen Plattformen das gleiche Erscheinungsbild aufweist und ein steckbares Erscheinungsbild bietet. Ich hoffe, Ihnen hat dieser Artikel gefallen. Lassen Sie mich wissen, wenn Sie Feedback haben. :) ❤️

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































