首页 > Java > java教程 > 如何使用 CardLayout 在 Swing GUI 中实现后退和前进按钮?

如何使用 CardLayout 在 Swing GUI 中实现后退和前进按钮?

DDD
发布: 2024-12-19 08:49:16
原创
738 人浏览过

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

使用 CardLayout 在 Swing 中实现后退/前进按钮

问题:

在 Swing 中,用户正在寻找一种便捷的方式来实现前进和后退按钮,以便在不同部分之间导航一个图形用户界面。使用堆栈系统实现这一点的尝试尚未成功,他们对替代解决方案持开放态度。

答案:

而不是使用堆栈系统,考虑使用 CardLayout。这个布局管理器允许您通过简单的命令在不同的面板之间切换,非常适合创建前进/后退导航系统。

解决方案:

以下代码代码片段展示了如何使用 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);
    }
}
登录后复制

此增强的解决方案为实现前进/后退按钮提供了更清晰、更灵活的方法在您的 Swing 应用程序中。

以上是如何使用 CardLayout 在 Swing GUI 中实现后退和前进按钮?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板