Java Swing:如何防止JOptionPane.showConfirmDialog()聚焦?

时间:2015-03-26 19:04:59

标签: java swing dialog focus joptionpane

在我的应用程序中,我在几个地方使用JOptionPane.showConfirmDialog()。

我现在要求防止它聚焦按钮,这样当用户按下< Enter>时,对话框仍然存在。

有没有办法在不必编写我自己的对话扩展名的情况下执行此操作?

澄清:主要问题是当用户按下回车时它可能不会关闭。没有聚焦的对话仅仅是实现这一目标的一种明显方式。

1 个答案:

答案 0 :(得分:3)

如果您设置自定义按钮并将初始按钮值设置为null,它将为您提供所需的行为:没有最初聚焦的按钮,因此按Enter键将不会执行任何操作。

见下面的例子:

public class Test {

    public static void main(final String[] args) {
        final Object[] options = { "OK", "Cancel" };
        JOptionPane.showOptionDialog(null, "Enter won't work.", "Title", 
                JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, 
                null, options, 
                null);  // this is the trick

        JOptionPane.showOptionDialog(null, "Can press Enter.", "Title", 
                JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, 
                null, options, options[1]);
    }
}