Java AWT:清理/删除容器面板

Posted

技术标签:

【中文标题】Java AWT:清理/删除容器面板【英文标题】:Java AWT: Clean / Remove a container panel 【发布时间】:2011-07-04 13:50:34 【问题描述】:

我是 Java AWT 的新手,我想为大学做一个练习。

这将是代码:

public class Panel0 extends JPanel 

     //...     

     private void createMyLayout(bool test) 


         this.add(BorderLayout.CENTER, new Panel1(test));

     

     //...



public class Panel1 extends JPanel 

    public Panel1(bool test)

        super(new GridLayout(1,4));

        if(breed!= Breed.ZOMBIE) 
            add(new Panel2("helow 1 test"));
        else
            add(new Panel2("helow 2 test"));

    



public class Panel2 extends JPanel

      public Panel2(String myText)
          super(new BorderLayout());
          add(new JLabel(myText));
           

当您调用方法“createMyLayout”时,我需要删除以前的布局并使用新数据重新创建它,但不要完成它。

谢谢。

【问题讨论】:

【参考方案1】:

其实是 Swing。您可以在 JPanel0 中使用 removeAll 方法,然后再在其上添加新内容。

【讨论】:

我可以只清理BorderLayout.CENTER吗?【参考方案2】:

这实际上是 javax.swing,而不是 java.awt。

另外,您的问题相当令人困惑。你说你想删除一个“布局”,但java实际上有一个布局类,这不是你在说的。您想删除 COMPONENTS。

myPanel.removeAll(); //removes all the stuff inside

会成功的。我建议重命名你的一些东西,这样你就不会混淆布局、面板和组件。

【讨论】:

我只能清理BorderLayout.CENTER吗?【参考方案3】:

我可以解决这个example的宽度:

BorderLayout layout = panel.getLayout();
panel.remove(layout.getLayoutComponent(BorderLayout.CENTER));

【讨论】:

remove() 删除单个组件。 removeAll() 删除所有组件。 @donnyton(我对awt和swing知之甚少)是的,但是方法'removeAll'删除了整个布局,我只需要清除中心。如果我删除“removeAll”不起作用的所有内容。可能就是这个不好的例子,代码太大了放不下

以上是关于Java AWT:清理/删除容器面板的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Java AWT/Swing 垂直对齐面板

如何使用Java AWT / Swing垂直对齐面板

第十一周课程总结

第十二周课程总结

分割面板(JSplitPane)

为啥此计时器中的 alpha 在此 Java Swing 面板中绘制在其自身之上?