簡體   English   中英

setDefaultCloseOperation對JButton不起作用

[英]setDefaultCloseOperation doesn't work for JButton

我創建了三個類:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM