【发布时间】:2013-02-03 00:09:29
【问题描述】:
我正在尝试创建 Java Swing 对话框,但我不想让对话框将焦点从当前关注的内容上移开。例如,如果您正在编辑一个 word doc,而另一个应用程序创建了一个对话框,您应该会看到该对话框,但 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);
}
}
【问题讨论】:
-
我已经在 Windows 7 上运行了你的代码,它的工作方式如你所愿 - 我可以在程序创建框时输入。
-
同样适用于 Windows Vista :)