gpt4 book ai didi

java - setDefaultCloseOperation 不适用于 JButton

转载 作者:行者123 更新时间:2023-11-30 03:24:01 27 4
gpt4 key购买 nike

我创建了三个类:

public class Gui extends JFrame {

private final JButton buttonClose = new JButton("Close");

private final MyButtonListener buttonListener = new MyButtonListener(this);
private final MyWindowListener windowListener = new MyWindowListener();

public SwitchGuiExtListeners() {
super("Switch");
setSize(200, 150);
setLayout(new BorderLayout());
add(buttonClose, BorderLayout.EAST);
buttonClose.addActionListener(this.buttonListener);
this.addWindowListener(this.windowListener);
setVisible(true);
}

public JButton getButtonClose() {
return buttonClose;
}
}

public class SwitchGuiWindowListener implements WindowListener{
...
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);

}
...
}

public class MyButtonListener implements ActionListener {
private final Gui gui;
public MyButtonListener (final Gui gui) {
this.gui = gui;
}

@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == gui.getButtonClose()){
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//System.exit(0);
}
}
}

如果我使用 gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);我的框架没有关闭。但是当我使用 System.exit(0) 时它就起作用了。为什么我不能使用 setDefaultCloseOperation(..)?

最佳答案

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 不会关闭 JFrame。它只是告诉 JFrame 必须在单击窗口右上角的关闭按钮时退出,即仅设置行为但会触发退出。

要关闭 JFrame,请使用如下内容:

frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));

来源:https://stackoverflow.com/a/1235994/1866196

关于java - setDefaultCloseOperation 不适用于 JButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30696067/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com