JButton从jpanel中删除所有其他jcomponent

时间:2014-02-17 19:41:09

标签: java swing jpanel jbutton actionlistener

我已将此actionlistener添加到按钮中:

//The ActionListener for the home button
ActionListener homeActionListener = new ActionListener(){
    public void actionPerformed(ActionEvent e) {
        removeAll();
        Home home = new Home();
        add(home);
    }
};

这是jpanel和jbutton的代码:

//creating the jpanel which will hold the buttons
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(null);
buttonPanel.setBounds(0,0,600,100);
buttonPanel.setBackground(Color.GRAY);
add(buttonPanel);

//creating the jbutton to send the user to the home page
JButton home = new JButton("Home");
home.setBounds(25,25,100,50);
buttonPanel.add(home);

如何删除jframe的每个组件,除了名为buttonPanel的jpanel?

3 个答案:

答案 0 :(得分:4)

  1. 停止使用空布局和setBounds。虽然使用null布局似乎是新手创建复杂GUI的更好方法,但这是一个谬论,你创建Swing GUI越多,你学会尊重和使用布局管理器就越多,并且看到这些生物在创建灵活,美丽方面有很大帮助如果需要,复杂的GUI。然后,您可以通过在将它们设置为可见之前调用pack()来让它们适当地调整自己的大小。
  2. 使用CardLayout交换JPanels。 Tutorial link here
  3. ......以及MadP所说的话!

答案 1 :(得分:4)

一种可能的解决方案是创建一个中央面板,其中包含所有其他组件,而只需在此容器上使用removeAll

小心地在removeAll上调用JFrame,它会删除根本不是你想要的根窗格。

HovercraftFullEels所说的

答案 2 :(得分:1)

getContentPane().removeAll();

removeAll()删除框架上的所有组件。