相关疑难解决方法(0)

Swing WindowListener如何否决JFrame关闭

我有一个框架,并希望在用户关闭它时提示保存文档.但如果他们取消,框架不应该关闭.

frame.addWindowListener(new SaveOnCloseWindowListener(fileState));
...
public class SaveOnCloseWindowListener extends WindowAdapter {
    private final FileState fileState;

    public SaveOnCloseWindowListener(FileState fileState) {
        this.fileState = fileState;
    }

    public void windowClosing(WindowEvent e) {
        if (!fileState.onQuit())
            cancelClose();  
    }
}
Run Code Online (Sandbox Code Playgroud)

FileState查看文档是否脏.如果不是它什么也不做,并返回true.如果它是脏的,它会询问用户是否要保存(是/否/取消).如果用户此时取消,则应该中止windowClosing.

我在网上看到的所有建议都涉及显式退出windowClosing方法,从而覆盖了JFrame.setDefaultCloseOperation()的使用,并重复了JFrame.processWindowEvent()中的代码.

我实际上有一个肮脏的解决方案,但想看看是否有更干净的解决方案.

干杯

java swing awt

8
推荐指数
1
解决办法
1万
查看次数

关闭JFrame之前显示提示

windowClosing在关闭特定的JFrame之前用来确认.

在关闭之前我得到一个确认对话框,但问题是即使我单击否按钮它也会关闭.有什么帮助吗?

addWindowListener(new WindowAdapter() {

  @Override
  public void windowClosing(WindowEvent we)
  { 
    String ObjButtons[] = {"Yes","No"};
    int PromptResult = JOptionPane.showOptionDialog(null, 
        "Are you sure you want to exit?", "Online Examination System", 
        JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, 
        ObjButtons,ObjButtons[1]);
    if(PromptResult==0)
    {
      System.exit(0);          
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

java swing

2
推荐指数
2
解决办法
3万
查看次数

标签 统计

java ×2

swing ×2

awt ×1