Heim > Java > javaLernprogramm > Wie kann ich mit CardLayout Zurück- und Vorwärts-Schaltflächen in einer Swing-GUI implementieren?

Wie kann ich mit CardLayout Zurück- und Vorwärts-Schaltflächen in einer Swing-GUI implementieren?

DDD
Freigeben: 2024-12-19 08:49:16
Original
738 Leute haben es durchsucht

How Can I Implement Back and Forward Buttons in a Swing GUI Using CardLayout?

Implementieren von Zurück-/Vorwärts-Schaltflächen in Swing mit CardLayout

Problem:

In Swing, Benutzer suchen nach einer bequemen Möglichkeit, Vor- und Zurück-Schaltflächen zum Navigieren zwischen verschiedenen Abschnitten einer GUI zu implementieren. Ein Versuch, dies mithilfe eines Stapelsystems umzusetzen, war nicht erfolgreich und sie sind offen für alternative Lösungen.

Antwort:

Anstatt ein Stapelsystem zu verwenden , erwägen Sie den Einsatz eines CardLayout. Mit diesem Layout-Manager können Sie mit einem einfachen Befehl zwischen verschiedenen Panels wechseln, was ihn ideal zum Erstellen eines Vorwärts-/Rückwärts-Navigationssystems macht.

Lösung:

Der folgende Code Snippet zeigt, wie Vorwärts- und Zurück-Schaltflächen mit CardLayout implementiert werden:

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.util.Random;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class CardPanel extends JPanel {

    private static final Random random = new Random();
    private static final JPanel cards = new JPanel(new CardLayout());
    private final String name;

    public CardPanel(String name) {
        this.name = name;
        this.setPreferredSize(new Dimension(320, 240));
        this.setBackground(new Color(random.nextInt()));
        this.add(new JLabel(name));
    }

    @Override
    public String toString() {
        return name;
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                create();
            }
        });
    }

    private static void create() {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        for (int i = 1; i < 9; i++) {
            CardPanel p = new CardPanel("Panel " + String.valueOf(i));
            cards.add(p, p.toString());
        }
        JPanel control = new JPanel();
        control.add(new JButton(new AbstractAction("\u22b2Prev") {

            @Override
            public void actionPerformed(ActionEvent e) {
                CardLayout cl = (CardLayout) cards.getLayout();
                cl.previous(cards);
            }
        }));
        control.add(new JButton(new AbstractAction("Next\u22b3") {

            @Override
            public void actionPerformed(ActionEvent e) {
                CardLayout cl = (CardLayout) cards.getLayout();
                cl.next(cards);
            }
        }));
        f.add(cards, BorderLayout.CENTER);
        f.add(control, BorderLayout.SOUTH);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }
}
Nach dem Login kopieren

Diese erweiterte Lösung bietet einen saubereren und flexibleren Ansatz für die Implementierung von Vor-/Zurück-Schaltflächen in Ihre Swing-Anwendung.

Das obige ist der detaillierte Inhalt vonWie kann ich mit CardLayout Zurück- und Vorwärts-Schaltflächen in einer Swing-GUI implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage