0

我正在用 Swing 开发一个应用程序。当我连接了两台显示器时,应用程序将不会显示。该图标出现在统一侧栏中,但无处可见该窗口。

我回到基础并从 Oracle tutorials 运行 HelloWorldSwing.java

http://docs.oracle.com/javase/tutorial/uiswing/examples/start/HelloWorldSwingProject/src/start/HelloWorldSwing.java

并且存在同样的问题。然后我发现如果我把 Monitor 1 放在左边,HelloWorld 就会出现在左上角。

当主监视器在右侧时,如何让 HelloWorldSwing(和一般的 Swing 应用程序)在 Unity 中显示?

我的显示配置:显示器 1(笔记本电脑屏幕)1280x800 显示器 2(“未知”)1440x900

监视器 2 在左侧。我的 ~/.xprofile 中有以下内容:

xrandr --newmode "1680x1050" 146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
xrandr --addmode VGA1 1680x1050
xrandr --newmode "1440x900" 106.50 1440 1528 1672 1904 900 903 909 934 -hsync +vsync
xrandr --addmode VGA1 1440x900
4

1 回答 1

0

好的,这很简单

private static void createAndShowGUI() {
    //Create and set up the window.
    JFrame frame = new JFrame("HelloWorldSwing");
    frame.setLocation (50, 50);
    ...

setLocation 可以很好地处理多个监视器。只是当监视器 2 离开时,默认位置(如果未调用 setLocation)似乎不在屏幕上。

正如预期的那样,0,0 在左监视器的左上角。但是,如果您使用 setLocation(0,0) 窗口的关闭/最小化/最大化按钮会被统一的顶栏遮住。

我想一些特定于平台的东西需要与统一的顶栏/侧栏集成。

于 2013-08-19T11:46:12.797 回答