当我将组件(主要是具有其他子组件的JPanel)的可见性设置为false或稍后恢复为true时,是否必须显式调用父容器上的.revalidate()
和.repaint()
LayoutManagers会自动处理吗?
例如,当我使用BorderLayout-North位置的组件尝试此操作时,一切看起来都很好而不调用revalidate。只是不确定它是否适用于所有平台和所有LayoutManagers。
答案 0 :(得分:1)
当你设置像JPanels这样的组件的可见性时。当您将可见性设置为true时,JVM会自动调用revalidate()和repaint()方法。你不需要调用所有这些方法。它适用于所有布局
答案 1 :(得分:1)
以下代码可以解决您的问题
p2_wrkrreg=new JPanel();
p2_wrkrreg.setBounds(201,0,830,720);
// p2_wrkrreg.setLayout(null);
//p2_wrkrreg.setBackground(Color.white);
p2_wrkrreg.setVisible(false);
在此代码中,
JPanel声明并使其不可见,点击按钮时可以看到它
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==btn_wrkrreg)
{
p2_wrkrreg.setVisible(true);
}
这里btn_wrkrreg是一个JButton