不可见的组件然后在Java中的窗格之间切换

不可见的组件然后在Java中的窗格之间切换,java,components,hidden,panels,Java,Components,Hidden,Panels,问题是,当我在窗格之间切换时,我的按钮和文本字段变得不可见,但当我将光标拖动到组件上时,它们就会出现。 我的层次结构与此类似: JFrame 带组件的面板 _按钮3 面板与面板 _PanelOne __按钮1 __标签1(背景) _第二小组 __标签2(背景) __按钮2 private void jRadioButton1ActionPerformed(java.awt.event.ActionEvent evt) {

问题是,当我在窗格之间切换时,我的按钮和文本字段变得不可见,但当我将光标拖动到组件上时,它们就会出现。 我的层次结构与此类似:

JFrame

  • 带组件的面板
  • _按钮3
  • 面板与面板
  • _PanelOne
  • __按钮1
  • __标签1(背景)
  • _第二小组
  • __标签2(背景)
  • __按钮2

    private void jRadioButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                              
     if (jRadioButton1.isSelected()){
        CardLayout cl = (CardLayout)(bottomPanel.getLayout());
        cl.next(bottomPanel);
    
    }else{
        CardLayout cl = (CardLayout)(bottomPanel.getLayout());
        cl.next(bottomPanel);
    
    
     }
    
    }


切换窗格时,应调用
revalidate()
repaint()
方法

frame.getContentPane().revalidate();
frame.getContentPane().repaint();
容器的添加方法

注意:如果组件已添加到已显示的容器中,则必须对该容器调用validate以显示新组件。如果要添加多个组件,则可以在添加所有组件后只调用一次validate来提高效率。

容器的删除方法中

注意:如果组件已从已显示的容器中删除,则必须对该容器调用validate(),以反映更改。如果要删除多个组件,您可以在删除所有组件后只调用一次validate(),以提高效率。


根据camickr的评论进行编辑。

为了更快地获得更好的帮助,请发布一条消息。我尝试过使用它,但框架上有下划线。我知道它是JFrame,但我不知道如何将JFrame变量作为对象。然后我使用JFrame名称,它似乎不起作用。你能编辑你的问题并添加你的代码吗(至少是在窗格之间切换的部分)。我尝试过使用它,但“frame”会被下划线。我知道它是Jframe,但我无法将Jframe作为对象;getContentPane().repaint()?效果很好!非常感谢你的帮助!