【问题标题】:Java Swing: How to prevent JOptionPane.showConfirmDialog() from focusing?Java Swing:如何防止 JOptionPane.showConfirmDialog() 聚焦?
【发布时间】:2015-03-26 19:04:58
【问题描述】:

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

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

有没有办法做到这一点而不必编写我自己的对话框扩展?

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

【问题讨论】:

    标签: java swing dialog focus joptionpane


    【解决方案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]。对话框将根据哪个按钮获得焦点而关闭。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    相关资源
    最近更新 更多