gpt4 book ai didi

java - 在嵌入式 JOptionPane 上按是/否无效

转载 作者:行者123 更新时间:2023-11-29 03:14:49 24 4
gpt4 key购买 nike

我正在尝试向 JFrame 添加退出确认检查,但我希望对话框不被修饰。我认为我需要使用自定义 JDialog 和自定义 JOptionPane。

frame.addWindowListener(new java.awt.event.WindowAdapter() {

@Override
public void windowClosing(java.awt.event.WindowEvent windowEvent) {
JDialog dialog = new JDialog();
dialog.setUndecorated(true);


JOptionPane pane = new JOptionPane("Are you sure that you want to exit?",
JOptionPane.QUESTION_MESSAGE,JOptionPane.YES_NO_OPTION);


dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); //I don't even know if this line does anything


dialog.setContentPane(pane);
dialog.pack();
dialog.setLocationRelativeTo(frame);
dialog.setVisible(true);

System.out.println("Next Line"); //this line does not work.

}
});

对话框完全按照我的要求显示,但单击"is"或“否”没有任何反应。对话框没有消失,我找不到检查单击哪个按钮的方法。 “下一行”永远不会打印到控制台。

最佳答案

仅嵌入 JOptionPane 是不够的。您需要为"is"和“否”按钮按下注册一个回调并适本地处理它们。这可以通过覆盖 setValue() 方法来完成

JOptionPane pane = new JOptionPane(
"Are you sure that you want to exit?",
JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION) {
@Override
public void setValue(Object newValue) {
if (newValue == Integer.valueOf(JOptionPane.YES_OPTION)) {
System.out.println("yes");
} else if ( newValue == Integer.valueOf(JOptionPane.NO_OPTION)) {
System.out.println("no");

}
}
};

关于java - 在嵌入式 JOptionPane 上按是/否无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27339988/

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