我是Java的新手,我正在尝试将所有JPanel的visible属性设置为false 在我的JFrame(框架。)
当我执行以下操作时,它会向控制台返回null:
public void mouseClicked(MouseEvent e){
for (Component c : frame.getComponents()) {
System.out.println(c.getName());
if (c instanceof JPanel) {
((JPanel)c).setVisible(false);
}
}
panelDispatch.setVisible(true);
panelDispatch.requestFocus();
}
我想要它做的是将所有面板的可见性设置为false 将选定的面板可见性设置为true。 3个JPanels被添加到框架中。
我在这里做错了什么?
非常感谢任何帮助。
答案 0 :(得分:3)
将组件添加到ContentPane
的{{1}}而不是JFrame
。您看到RootPane
显示在控制台上,因为您可能没有设置组件的name property
null
答案 1 :(得分:2)
我不知道为什么你看到null,我不确定你看到它的方式,也许是NullPointerException,但我知道你似乎正在删除JFrame的contentPane,glassPane和rootPane无意中发生了危险的事情。相反,只需使用一个CardLayout,它可以让您轻松简单地交换GUI视图,因为这正是CardLayout的构建方式。有关详细信息,请查看CardLayout Tutorial。
修改强>
有关使用CardLayout的GUI的示例,请查看:
这个是不寻常的,因为它使用CardLayout并且有一个面板淡入另一个面板: