Maison >Java >javaDidacticiel >Comment puis-je implémenter des boutons Précédent et Suivant dans une interface graphique Swing à l'aide de CardLayout ?
Implémentation des boutons Précédent/Suivant dans Swing à l'aide de CardLayout
Problème :
Dans Swing, les utilisateurs recherchent un moyen pratique d'implémenter des boutons avant et arrière pour naviguer entre les différentes sections d'une interface graphique. Une tentative de mise en œuvre de cela à l'aide d'un système de pile n'a pas abouti et ils sont ouverts à des solutions alternatives.
Réponse :
Au lieu d'utiliser un système de pile , pensez à utiliser un CardLayout. Ce gestionnaire de mise en page vous permet de basculer entre différents panneaux avec une simple commande, ce qui le rend idéal pour créer un système de navigation avant/arrière.
Solution :
Le code suivant L'extrait montre comment implémenter les boutons avant et arrière à l'aide de CardLayout :
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); } }
Cette solution améliorée offre une approche plus propre et plus flexible pour implémenter les boutons avant/arrière dans votre application Swing.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!