java - 阻止新创建的对话框获得焦点

标签 java swing focus jdialog

我正在尝试创建 Java Swing 对话框,但我不想让对话框将焦点从当前聚焦的内容上移开。因此,例如,如果您正在编辑一个 word 文档,而另一个应用程序创建了一个对话框,您应该会看到该对话框,但 word doc 应该保持焦点,以便您可以继续编辑。

我已经在 Mac OSX 和 Ubuntu 12.04 上测试了以下代码。在 Mac 上,代码创建的对话框不像我想要的那样获得焦点。在 Ubuntu 上,对话框占据焦点,在创建它们时我无法输入。

我真的希望这不是特定于操作系统的。有什么方法可以实现我在所有平台(或至少是 Ubuntu)上尝试做的事情吗?

import javax.swing.*;
import java.awt.Color;
import java.util.Random;

public class Focus {
    private static Random r = new Random();

    public static void main(String[] args) {
        while(true) {   
            try {
                Thread.sleep(500);
                createObject(r.nextInt(1000), r.nextInt(600));
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    public static void createObject(int x, int y) {
        JDialog testDialog = new JDialog();
        testDialog.setSize(50, 50);
        testDialog.setLocation(x, y);
        testDialog.setAlwaysOnTop(true);
        testDialog.setUndecorated(true);
        testDialog.setFocusable(false);
        testDialog.setEnabled(false);
        testDialog.setVisible(true);
    }
}

最佳答案

也许:

testDialog.setFocusableWindowState(false);

关于java - 阻止新创建的对话框获得焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14668010/

相关文章:

java - 如何在java中对齐JPanel

wpf - 在没有代码隐藏的情况下按下键时将焦点设置在另一个控件上

java - 立即向下转换有什么好处?

java - cordova 插件添加外部 .aar 文件(不是 .jar)

java - 文件资源管理器 - 以编程方式更改文件/文件夹关联的图标

java - JFormattedTextfield 仅在按下回车时验证

java - 为什么单击微调器时调试报告会记录 "Attempted to finish an input event but the input event receiver has already been disposed"?

java - 合成 LaF JLabel 禁用颜色

java - 自定义 Java ListCellRenderer - 无法单击 JCheckBox

apache-flex - 弹性 : Lose Component Focus