Maison > Java > javaDidacticiel > Comment puis-je implémenter des boutons Précédent et Suivant dans une interface graphique Swing à l'aide de CardLayout ?

Comment puis-je implémenter des boutons Précédent et Suivant dans une interface graphique Swing à l'aide de CardLayout ?

DDD
Libérer: 2024-12-19 08:49:16
original
802 Les gens l'ont consulté

How Can I Implement Back and Forward Buttons in a Swing GUI Using 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);
    }
}
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal