Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaSwing:如何防止JOptionPane.showConfirmDialog()聚焦?_Java_Swing_Dialog_Focus_Joptionpane - Fatal编程技术网

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

JavaSwing:如何防止JOptionPane.showConfirmDialog()聚焦?,java,swing,dialog,focus,joptionpane,Java,Swing,Dialog,Focus,Joptionpane,在我的应用程序中,我在几个地方使用了JOptionPane.showConfirmDialog() 我现在需要防止它聚焦一个按钮,这样当用户按下时,对话框仍然存在 有没有一种方法可以做到这一点,而不必编写自己的对话框扩展 澄清:主要问题是当用户按enter键时,它可能无法关闭。不对焦的对话框只是实现这一点的一种明显方式。如果您设置自定义按钮并将初始按钮值设置为null,它将为您提供所需的行为:没有初始对焦按钮,因此按Enter键将不起任何作用 请参见以下示例: public class Test

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

我现在需要防止它聚焦一个按钮,这样当用户按下时,对话框仍然存在

有没有一种方法可以做到这一点,而不必编写自己的对话框扩展


澄清:主要问题是当用户按enter键时,它可能无法关闭。不对焦的对话框只是实现这一点的一种明显方式。

如果您设置自定义按钮并将初始按钮值设置为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]);
    }
}

如果您设置自定义按钮并将初始按钮值设置为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]);
    }
}

如果您设置自定义按钮并将初始按钮值设置为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]);
    }
}

如果您设置自定义按钮并将初始按钮值设置为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]);
    }
}

然而,Windows似乎将按[space]视为按[Enter]。对话框将根据哪个按钮具有焦点而关闭。但是,Windows似乎将按[space]视为按[Enter]。对话框将根据哪个按钮具有焦点而关闭。但是,Windows似乎将按[space]视为按[Enter]。对话框将根据哪个按钮具有焦点而关闭。但是,Windows似乎将按[space]视为按[Enter]。对话框将关闭,具体取决于哪个按钮具有焦点。