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

时间:2014-09-15 10:27:58

标签: java swing jpanel layout-manager

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

例如,当我使用BorderLayout-North位置的组件尝试此操作时,一切看起来都很好而不调用revalidate。只是不确定它是否适用于所有平台和所有LayoutManagers。

2 个答案:

答案 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