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