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