如何动态删除JPanel中的所有组件

Kri*_*han 2 java swing

要求是我有2个面板,即.Panel1,Panel2.Panel1将有2个按钮,当我点击任何按钮时,Panel应该动态显示Panel1上特定于该按钮的组件.

public class ListenerForRadioButton implements ActionListener{

JButton browseGlobal;
JFrame ParentFrame = new JFrame("Bla-Bla");
JPanel ChildPanel2 = new JPanel();
JButton upload ;

public ListenerForRadioButton(JFrame JFrameConstructor, JPanel JPanelConstructor, JButton uploadConstructor ){
    this.ParentFrame = JFrameConstructor;
    this.ChildPanel2 = JPanelConstructor;
    this.upload = uploadConstructor;
}

public void actionPerformed(ActionEvent event){

    //ChildPanel2.remove(upload);
    ChildPanel2.remove(upload);
    System.out.println("My listener is called");
Run Code Online (Sandbox Code Playgroud)

} //方法结束} //结束

公共类Create_JFrame扩展了JFrame {

public Create_JFrame(){

     //Create a Frame
     JFrame ParentFrame = new JFrame("Bla-Bla");
     JPanel ChildPanel1 = new JPanel();
     JPanel ChildPanel2 = new JPanel();
     JButton Option1 = new JButton("Option1");
     JButton browse = new JButton("Browse");
     JButton upload = new JButton("Upload");

     //Layout management
     ParentFrame.getContentPane().add(BorderLayout.WEST, ChildPanel1);
     ParentFrame.getContentPane().add(BorderLayout.EAST, ChildPanel2);


     //Create a button
     browse.addActionListener(new ListenerForRadioButton(ParentFrame,ChildPanel2,upload)); //Registering my listener

     ChildPanel2.add(browse);
     ChildPanel2.add(upload);
     ChildPanel1.add(Option1);


     //Make the frame visible
     ParentFrame.setSize(500, 300);
     ParentFrame.setVisible(true);
    }//end of Main
}//end of Class
Run Code Online (Sandbox Code Playgroud)

rdo*_*nuk 11

有了removeAll()你可以从中删除所有组件Container.

ChildPanel2.removeAll();
ChildPanel2.revalidate();
ChildPanel2.repaint();
Run Code Online (Sandbox Code Playgroud)