Java删除/添加JPanel

时间:2013-11-16 21:22:39

标签: java swing jpanel

目前我有一个包含两个面板的客户端......一个是主游戏,另一个是包含工具的侧面板。可以显示/隐藏侧面板(从而使框架仅显示游戏)。

            activateSidePanel.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (sp) {
                    frame.remove(enhancedPanel);
                    frame.repaint();
                    frame.pack();
                    sp = false;
                } else if (!sp) {
                    frame.add(enhancedPanel);
                    frame.repaint();
                    frame.pack();
                    sp = true;
                }
            }
        });

这是我按钮的动作监听器。按钮正确隐藏,但不显示。当我再次单击该按钮时,它会使框架变小并且不会使侧面板返回。困惑于此。

1 个答案:

答案 0 :(得分:2)

} else if (!sp) {

为什么要测试!sp?布尔值只能有两个值,所以你需要的只是一个if / else语句(没有对else进行测试。

我会尝试首先调用removing/adding方法而不是setVisible(false/true)面板。

如果这不起作用,那么删除/添加组件的一般代码是:

panel.add(...)
panel.revalidate(); 
panel.repaint();

您不需要调用pack(),因为您不希望框架继续调整大小,您只希望主面板变得更大/更小。