Lernpfad:Grafische Benutzeroberflächen in Java/3: Unterschied zwischen den Versionen

Aus Informatik-Box
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 5: Zeile 5:
Zur besseren Übersicht macht es Sinn, die Erstellung der Komponenten in eine separate Methode auszulagern:
Zur besseren Übersicht macht es Sinn, die Erstellung der Komponenten in eine separate Methode auszulagern:


<syntaxhighlight lang="java" line="1" highlight="8-9,14,26-32">
<syntaxhighlight lang="java" line="1" highlight="2-3,8-9,14,26-32">
import javax.swing.JFrame;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLabel;
Zeile 40: Zeile 40:
}
}
</syntaxhighlight>
</syntaxhighlight>
In der Methode <code>addComponents</code> werden zunächst ein <code>JButton</code> und ein <code>JLabel</code> erstellt. Beide Komponenten werden dann dem <code>JFrame</code> mit <code>add()</code> hinzugefügt. Allerdings gibt es noch ein Problem: Anstatt zwei Komponenten erhalten wir nur den Text <code>Hallo, Welt!</code>.
[[Bild:Java GUI JFrame 2.png|400px|center|JFrame mit einem JLabel.]]
{{Aufgabe:Start}}
Welchen Grund könnte es haben, dass der <code>JButton</code> nicht im Fenster zu sehen ist? Stelle Vermutungen an und gehe dann zum {{NPfad|4|nächsten Schritt}}.
{{Aufgabe:End}}

Version vom 8. November 2022, 10:17 Uhr

Java Swing besitzt eine Reihe an Komponenten, aus denen eine GUI zusammengestellt werden kann. Sie beginnen mit einem J und befinden sich im Paket javax.swing.

Zur besseren Übersicht macht es Sinn, die Erstellung der Komponenten in eine separate Methode auszulagern:

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;

public class GUI {
    private JFrame frame;
    
    private JButton jbButton1;
    private JLabel jlText;
    
    public GUI( String pTitle ) {
        frame = new JFrame(pTitle);
        
        addComponents();
        
        // Programm beenden, wenn Fenster geschlossen wird
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // Größe einstellen
        frame.setSize(400, 400);
        // Fenster zentrieren
        frame.setLocationRelativeTo(null);
        // Fenster anzeigen
        frame.setVisible(true);
    }
    
    private void addComponents() {
        jbButton1 = new JButton("Klick mich!");
        jlText = new JLabel("Hallo, Welt!");
        
        frame.add(jbButton1);
        frame.add(jlText);
    }
}

In der Methode addComponents werden zunächst ein JButton und ein JLabel erstellt. Beide Komponenten werden dann dem JFrame mit add() hinzugefügt. Allerdings gibt es noch ein Problem: Anstatt zwei Komponenten erhalten wir nur den Text Hallo, Welt!.

JFrame mit einem JLabel.
Icon Heft.png
Arbeitsauftrag

Welchen Grund könnte es haben, dass der JButton nicht im Fenster zu sehen ist? Stelle Vermutungen an und gehe dann zum GUI Komponenten anordnen.