Java AWT: очистить / удалить панель контейнера - PullRequest
0 голосов
/ 25 февраля 2011

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", мне нужно удалить предыдущий макет и воссоздать его с новыми данными, но не сделать это.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 25 февраля 2011

Я могу решить ширину этого примера :

BorderLayout layout = panel.getLayout();
panel.remove(layout.getLayoutComponent(BorderLayout.CENTER));
2 голосов
/ 25 февраля 2011

На самом деле, это Свинг. Вы можете использовать метод removeAll в JPanel0, прежде чем добавлять в него новый контент.

0 голосов
/ 25 февраля 2011

Это на самом деле javax.swing, а не java.awt.

Кроме того, ваш вопрос довольно запутанный. Вы говорите, что хотите удалить «макет», но на самом деле в Java есть класс Layout, о котором вы не говорите. Вы хотите удалить КОМПОНЕНТЫ.

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

сделает свое дело. Я бы порекомендовал переименовать некоторые из ваших материалов, чтобы не путать макеты, панели и компоненты.

...