目前我有一个包含两个面板的客户端......一个是主游戏,另一个是包含工具的侧面板。可以显示/隐藏侧面板(从而使框架仅显示游戏)。
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;
}
}
});
这是我按钮的动作监听器。按钮正确隐藏,但不显示。当我再次单击该按钮时,它会使框架变小并且不会使侧面板返回。困惑于此。
答案 0 :(得分:2)
} else if (!sp) {
为什么要测试!sp
?布尔值只能有两个值,所以你需要的只是一个if / else语句(没有对else进行测试。
我会尝试首先调用removing/adding
方法而不是setVisible(false/true)
面板。
如果这不起作用,那么删除/添加组件的一般代码是:
panel.add(...)
panel.revalidate();
panel.repaint();
您不需要调用pack(),因为您不希望框架继续调整大小,您只希望主面板变得更大/更小。