代码之家  ›  专栏  ›  技术社区  ›  wvdz

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

  •  0
  • wvdz  · 技术社区  · 10 年前

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

    我现在需要防止它聚焦按钮,这样当用户按下<输入>,对话框将保留。

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

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

    1 回复  |  直到 10 年前
        1
  •  3
  •   martinez314    10 年前

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