点击bt,没有反应,按钮已经被点击了

问题描述 投票:0回答:1
public void Init(){
    JPanel panel=new JPanel();
    JButton bt=new JButton("按钮");
    JCheckBox checkBox1=new JCheckBox("aaaaa");
    JCheckBox checkBox2=new JCheckBox("bbbbb");
    JCheckBox checkBox3=new JCheckBox("ccccc");

    bt.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            panel.removeAll();
        }
    });

    panel.add(bt);
    panel.add(checkBox1);
    panel.add(checkBox2);
    panel.add(checkBox3);

    frame.add(panel);

}

点击bt,没有反应,按钮已经被点击了。

希望点击bt后能够执行actionPerformed中的操作

java swing jbutton
1个回答
0
投票

您的代码无法按预期工作的原因是因为从面板中删除所有组件后您缺少两个重要步骤。您需要调用 panel.revalidate() 和 panel.repaint() 来更新面板的布局和外观。否则,更改将不会反映在屏幕上。您可以修复您的代码:

public void Init(){
JPanel panel=new JPanel();
JButton bt=new JButton("按钮");
JCheckBox checkBox1=new JCheckBox("aaaaa");
JCheckBox checkBox2=new JCheckBox("bbbbb");
JCheckBox checkBox3=new JCheckBox("ccccc");

bt.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
panel.removeAll(); // remove all components from the panel
panel.revalidate(); // update the panel's layout
panel.repaint(); // repaint the panel
}
});

panel.add(bt);
panel.add(checkBox1);
panel.add(checkBox2);
panel.add(checkBox3);

frame.add(panel);

}
© www.soinside.com 2019 - 2024. All rights reserved.