在Java和ActionPerformed调用中更改JFrame组件

时间:2014-08-26 07:26:29

标签: java swing jframe awt

如何在Click事件中从contentPane中删除所有JFrame个组件?

以下是代码:

final JButton b = new JButton("Table");
b.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        System.out.println(b.getText());
        contentPane.removeAll();//PRessing the button, it does not go away
    }});
contentPane.add(b);

如果我在actionPerformed function

之外使用contentPane.removeAll();
contentPane.removeAll();

然后它运作良好

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setJMenuBar(AppViewMenu.getMenu(this));
setTitle("Simple examplesss");
setSize(500, 600);
setLocationRelativeTo(null);
setVisible(isVisible);

谢谢

1 个答案:

答案 0 :(得分:2)

您可以使用removeAll()方法,但在Swing中它不是首选方法。更好的方法是提供两个视图,这些视图使用CardLayout放置在一个面板中,并且在ActionListener中可以切换视图。

如果您仍想使用removeAll(),则应在此之后致电revalidate()repaint()

public void actionPerformed(ActionEvent e) {
    contentPane.removeAll();
    contentPane.revalidate();
    contentPane.repaint();
}