Java Swing:动态更改组件的可见性

Java Swing:动态更改组件的可见性,java,swing,jpanel,layout-manager,Java,Swing,Jpanel,Layout Manager,当我稍后将组件(主要是具有其他子组件的JPanel)的可见性设置为false或true时,我必须显式地调用父容器上的.revalidate()和.repaint(),还是LayoutManager会自动处理 例如,当我尝试使用BorderLayout North位置的组件时,没有调用revalidate,一切看起来都很好。只是不确定它是否能在所有平台和所有布局管理器上工作。当您设置组件(如JPanels)的可见性时。当您将可见性设置为true时,JVM会自动调用revalidate()和repa

当我稍后将组件(主要是具有其他子组件的JPanel)的可见性设置为false或true时,我必须显式地调用父容器上的
.revalidate()
.repaint()
,还是LayoutManager会自动处理


例如,当我尝试使用BorderLayout North位置的组件时,没有调用revalidate,一切看起来都很好。只是不确定它是否能在所有平台和所有布局管理器上工作。

当您设置组件(如JPanels)的可见性时。当您将可见性设置为true时,JVM会自动调用revalidate()和repaint()方法。u不需要调用所有这些方法。它将适用于所有布局

以下代码可能会解决您的问题

      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

它将与所有标准布局管理器一起工作