我正在尝试创建Java Swing对话框,但是我不想让该对话框使焦点从当前关注的焦点移开。因此,例如,如果您正在编辑Word文档,并且其他应用程序创建了一个对话框,则应该看到该对话框,但是Word文档应保持焦点,以便您可以继续编辑。

我已经在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);

10-04 23:17