swing
Verwenden von Swing für grafische Benutzeroberflächen
Suche…
Bemerkungen
Beenden der Anwendung beim Schließen des Fensters
Es ist leicht zu vergessen, die Anwendung zu beenden, wenn das Fenster geschlossen wird. Denken Sie daran, die folgende Zeile hinzuzufügen.
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed
Leeres Fenster erstellen (JFrame)
JFrame erstellen
Ein Fenster zu erstellen ist einfach. Sie müssen nur einen JFrame
erstellen.
JFrame frame = new JFrame();
Das Fenster betiteln
Sie können Ihrem Fenster einen Titel geben. Sie können dies tun, indem Sie beim Erstellen des JFrame
einen String JFrame
oder frame.setTitle(String title)
aufrufen.
JFrame frame = new JFrame("Super Awesome Window Title!");
//OR
frame.setTitle("Super Awesome Window Title!");
Fenstergröße einstellen
Das Fenster ist so klein wie möglich, wenn es erstellt wurde. Um es zu vergrößern, können Sie seine Größe explizit einstellen:
frame.setSize(512, 256);
Oder Sie können die Frame-Größe selbst anhand der pack()
-Methode basierend auf der Größe des Inhalts pack()
.
frame.pack();
Die setSize()
und pack()
sich gegenseitig aus, verwenden Sie also die eine oder die andere.
Was ist bei Window Close zu tun?
Beachten Sie, dass die Anwendung nicht beendet wird, wenn das Fenster geschlossen wurde. Sie können die Anwendung beenden, nachdem das Fenster geschlossen wurde, indem Sie den JFrame
dazu auffordern.
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Alternativ können Sie dem Fenster mitteilen, dass es beim Schließen etwas anderes tun soll.
WindowConstants.DISPOSE_ON_CLOSE //Get rid of the window
WindowConstants.EXIT_ON_CLOSE //Quit the application
WindowConstants.DO_NOTHING_ON_CLOSE //Don't even close the window
WindowConstants.HIDE_ON_CLOSE //Hides the window - This is the default action
Erstellen eines Inhaltsbereichs
Ein optionaler Schritt ist das Erstellen eines Inhaltsbereichs für Ihr Fenster. Dies ist nicht erforderlich, aber wenn Sie dies möchten, erstellen Sie ein JPanel
und rufen Sie frame.setContentPane(Component component)
.
JPanel pane = new JPanel();
frame.setContentPane(pane);
Das Fenster anzeigen
Nach dem Erstellen möchten Sie Ihre Komponenten erstellen und dann das Fenster anzeigen. Die Anzeige des Fensters erfolgt als solches.
frame.setVisible(true);
Beispiel
Für diejenigen von Ihnen, die gerne kopieren und einfügen, hier ein Beispielcode.
JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed
JPanel pane = new JPanel(); //Create the content pane
frame.setContentPane(pane); //Set the content pane
frame.setVisible(true); //Show the window
Komponenten hinzufügen
Eine Komponente ist eine Art Benutzeroberflächenelement, z. B. eine Schaltfläche oder ein Textfeld.
Eine Komponente erstellen
Das Erstellen von Komponenten ist nahezu identisch mit dem Erstellen eines Fensters. Anstatt einen JFrame
erstellen, erstellen Sie diese Komponente. Um beispielsweise eine JButton
zu erstellen, führen Sie folgende JButton
aus.
JButton button = new JButton();
Viele Komponenten können beim Erstellen Parameter übergeben werden. Beispielsweise kann einer Schaltfläche Text angezeigt werden, der angezeigt werden soll.
JButton button = new JButton("Super Amazing Button!");
Wenn Sie keine Schaltfläche erstellen möchten, finden Sie in einem anderen Beispiel auf dieser Seite eine Liste mit häufig verwendeten Komponenten.
Die Parameter, die an sie übergeben werden können, variieren von Komponente zu Komponente. Eine gute Möglichkeit zu überprüfen, was sie akzeptieren können, ist, sich die Parameter in Ihrer IDE anzusehen (falls Sie eines verwenden). Die Standardverknüpfungen sind unten aufgeführt.
- IntelliJ IDEA - Windows / Linux:
CTRL + P
- IntelliJ IDEA - OS X / macOS:
CMD + P
- Eclipse:
CTRL + SHIFT + Space
- NetBeans:
CTRL + P
Anzeige der Komponente
Nachdem eine Komponente erstellt wurde, legen Sie normalerweise deren Parameter fest. Danach müssen Sie es irgendwo JFrame
, beispielsweise in Ihrem JFrame
oder in Ihrem Inhaltsbereich, falls Sie einen erstellt haben.
frame.add(button); //Add to your JFrame
//OR
pane.add(button); //Add to your content pane
//OR
myComponent.add(button); //Add to whatever
Beispiel
Hier ein Beispiel zum Erstellen eines Fensters, Festlegen eines Inhaltsbereichs und Hinzufügen einer Schaltfläche zum Fenster.
JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed
JPanel pane = new JPanel(); //Create the content pane
frame.setContentPane(pane); //Set the content pane
JButton button = new JButton("Super Amazing Button!"); //Create the button
pane.add(button); //Add the button to the content pane
frame.setVisible(true); //Show the window
Parameter für Komponenten einstellen
Komponenten haben verschiedene Parameter, die für sie eingestellt werden können. Sie sind von Komponente zu Komponente unterschiedlich. Um zu ermitteln, welche Parameter für Komponenten festgelegt werden können, sollten Sie mit der Eingabe von componentName.set
und die automatische Vervollständigung Ihrer IDE (wenn Sie eine IDE verwenden) vorschlagen. Die Standardverknüpfung in vielen IDEs lautet CTRL + Space
Leertaste, wenn sie nicht automatisch angezeigt wird.
Gemeinsame Parameter, die von allen Komponenten gemeinsam genutzt werden
Beschreibung | Methode |
---|---|
Legt die kleinste Größe für die Komponente fest (nur wenn der Layoutmanager die minimumSize-Eigenschaft berücksichtigt). | setMinimumSize(Dimension minimumSize) |
Legt die größte Größe der Komponente fest (nur wenn der Layoutmanager die maximumSize-Eigenschaft berücksichtigt). | setMaximumSize(Dimension maximumSize) |
Legt die perferred-Größe der Komponente fest (nur, wenn der Layout-Manager die Eigenschaft PreferredSize berücksichtigt). | setPreferredSize(Dimension preferredSize) |
Zeigt oder verbirgt die Komponente | setVisible(boolean aFlag) |
Legt fest, ob die Komponente auf Benutzereingaben reagieren soll | setEnabled(boolean enabled) |
Legt die Schriftart für den Text fest | setFont(Font font) |
Legt den Text der QuickInfo fest | setToolTipText(String text) |
Legt die Hintergrundfarbe der Komponente fest | setBackground(Color bg) |
Legt die Vordergrundfarbe (Schriftfarbe) der Komponente fest | setForeground(Color bg) |
Gemeinsame Parameter in anderen Komponenten
Gemeinsame Komponenten | Beschreibung | Methode |
---|---|---|
JLabel , JButton , JCheckBox , JRadioButton , JToggleButton , JMenu , JMenuItem , JTextArea , JTextField | Legt den angezeigten Text fest | setText(String text) |
JProgressBar , JScrollBar , JSlider , JSpinner | Legt einen numerischen Wert zwischen den minimalen und maximalen Werten der Komponente fest | setValue(int n) |
JProgressBar , JScrollBar , JSlider , JSpinner | Legt den kleinsten möglichen Wert fest, den die value Eigenschaft annehmen kann | setMinimum(int n) |
JProgressBar , JScrollBar , JSlider , JSpinner | Legt den größtmöglichen Wert fest, den die value Eigenschaft annehmen kann | setMaxmimum(int n) |
JCheckBox , JToggleBox | Legt fest, ob der Wert wahr oder falsch ist (z. B .: Soll ein Kontrollkästchen aktiviert werden?) | setSelected(boolean b) |
Gemeinsame Komponenten
Beschreibung | Klasse |
---|---|
Taste | JButton |
Ankreuzfeld | JCheckBox |
Dropdown-Menü / Kombinationsfeld | JComboBox |
Etikette | JLabel |
Liste | JList |
Menüleiste | JMenuBar |
Menü in einer Menüleiste | JMenu |
Element in einem Menü | JMenuItem |
Panel | JPanel |
Fortschrittsanzeige | JProgressBar |
Radio knopf | JRadioButton |
Scrollleiste | JScrollBar |
Schieberegler | JSlider |
Spinner / Zahlenauswahl | JSpinner |
Tabelle | JTable |
Baum | JTree |
Textbereich / mehrzeiliges Textfeld | JTextArea |
Textfeld | JTextField |
Werkzeugleiste | JToolBar |
Interaktive Benutzeroberflächen erstellen
Einen Knopf dort zu haben ist alles gut und gut, aber was ist der Punkt, wenn das Klicken nichts macht? ActionListener
werden verwendet, um Ihrer Schaltfläche oder anderen Komponente mitzuteilen, dass sie bei Aktivierung etwas tut.
Das Hinzufügen von ActionListener
erfolgt als solches.
buttonA.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//Code goes here...
System.out.println("You clicked the button!");
}
});
Oder, wenn Sie Java 8 oder höher verwenden ...
buttonA.addActionListener(e -> {
//Code
System.out.println("You clicked the button!");
});
Beispiel (Java 8 und höher)
JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed
JPanel pane = new JPanel(); //Create a pane to house all content
frame.setContentPane(pane);
JButton button = new JButton("Click me - I know you want to.");
button.addActionListener(e -> {
//Code goes here
System.out.println("You clicked me! Ouch.");
});
pane.add(buttonA);
frame.setVisible(true); //Show the window
Komponentenlayout organisieren
Das Hinzufügen von Komponenten nacheinander führt zu einer schwer zu verwendenden Benutzeroberfläche, da sich alle Komponenten irgendwo befinden . Die Komponenten sind von oben nach unten angeordnet, wobei jede Komponente in einer separaten "Reihe" angeordnet ist.
Um dem abzuhelfen und Ihnen als Entwickler die Möglichkeit zu geben, Komponenten einfach zu gestalten, bietet Swing LayoutManager
.
Diese LayoutManager werden ausführlicher in Einführung in Layout Manager sowie in den separaten Layout Manager-Themen behandelt: