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

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

我是 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”时,我需要删除以前的布局并使用新数据重新创建它,但不要完成它。

谢谢。

【问题讨论】:

    标签: java awt jpanel


    【解决方案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”不起作用的所有内容。可能就是这个不好的例子,代码太大了放不下
    猜你喜欢
    • 1970-01-01
    • 2011-05-21
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 2012-02-12
    • 1970-01-01
    相关资源
    最近更新 更多