2

我有一个 Java 应用程序,它在两个单独的监视器上显示两个 JFrame。在 Ubuntu 和 Windows 上,应用程序显示得很好。我可以将 JFrame 配置为在具有指定屏幕 ID 的监视器上显示。但是在 openSUSE 上,无论设置如何,它都会一直显示在同一监视器上。与 openSUSE 有什么不同?

下面是一些我用来确定 JFrame 必须在哪个监视器上显示的代码:


    GraphicsDevice[] screens = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
    for (int s = 0; s < screens.length; s++) {
        GraphicsConfiguration configuration = null;
        for (int c = 0; c < screens[s].getConfigurations().length; c++) {
            if (AWTUtilities.isTranslucencyCapable(screens[s].getConfigurations()[c])) {
                configuration = screens[s].getConfigurations()[c];
                break;
            }
        }
        if (configuration == null) {
            configuration = screens[s].getDefaultConfiguration();
        }
        if (screens[s].getIDstring().equals[frame1_id]) {
            frame1 = new JFrame("Frame 1", configuration);
            frame1.setResizable(false);
            frame1.setUndecorated(true);
            frame1.setBounds(configuration.getBounds());
            frame1.setVisible(true);
        }
        if (screens[s].getIDstring().equals[frame2_id]) {
            frame2 = new JFrame("Frame 2", configuration);
            frame2.setResizable(false);
            frame2.setUndecorated(true);
            frame2.setBounds(configuration.getBounds());
            frame2.setVisible(true);
        }
    }
4

1 回答 1

1

OpenSuse 的实现GraphicsEnvironment可能取决于特定窗口管理器的选择。您必须进行试验才能找到最佳的。

附录:@bouncer 评论,“我使用了 Gnome 窗口管理器,导致问题。切换到 KDE 后,问题解决了。” 另请参阅安装 openSUSE 12.3 后要做的 10 件事

于 2013-05-20T08:39:27.750 回答