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

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

我有个简短的问题。

我在Swing方面获得了一些经验,最简单的方法就是绘制一个相当大的GUI。

作为GUI的一部分,我希望有前进和后退按钮。我试图采用的方法是实现将当前JPanel推到堆栈并检索前一个值的方法(无论是正向还是反向(因此是2个堆栈)。但我不能让它起作用。也许我是完全错误地使用它,或者一个堆栈不能像我使用它那样被使用。不管是哪种情况,都让我心烦。我想可能有更简单的方法,如卡片布局,但我认为这种方法应该有效,这就是什么是如此恼人。

值得注意的是,我正在使用JFrame“基类”,并根据屏幕更改中央JPanel。然而,导航条作为“基类”的一部分是常量。

这个“基类”的代码:

public class Main_Frame extends JFrame{
    static JPanel nav_bar_panel;
    JButton home;
    JButton back;
    JButton forward;
    JPanel currentPanel;

    static Stack<JPanel> previousPanels;
    static Stack<JPanel> forwardPanels;

    public Main_Frame(){
        super("DEMO");
        setSize(800,600);
        setLayout(new BorderLayout());
        setVisible(true);

        add(nav_bar(), BorderLayout.NORTH);
        currentPanel = init_display();
        add(currentPanel, BorderLayout.CENTER);

        previousPanels = new Stack<JPanel>();
        forwardPanels  = new Stack<JPanel>();
    }

    private JPanel nav_bar(){
        ButtonPressHandler handler = new ButtonPressHandler();

        nav_bar_panel = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 10));
        back = new JButton("Back");
        back.addActionListener(handler);
        home = new JButton("Home");
        home.addActionListener(handler);
        forward = new JButton("Forward");
        forward.addActionListener(handler);

        nav_bar_panel.add(back);
        nav_bar_panel.add(home);
        nav_bar_panel.add(forward);

        return nav_bar_panel;
    }

    private JPanel init_display(){
        Home_Panel home_panel = new Home_Panel();

        return home_panel;
    }

    public void change_display(JPanel myPanel){
        invalidate();
        remove(currentPanel);
        previousPanels.push(currentPanel);
        currentPanel = myPanel;
        add(currentPanel);
        validate();
    }


30秒到达战场
浏览 787回答 3
3回答

牛魔王的故事

使我得到的任何东西可重用的想法是一个很好的想法。可惜Swing没有内置这个功能检查卡片布局动作这可能是试图使卡片布局更容易使用这样的东西。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java