我有一个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);
}
}
答案 0 :(得分:1)
GraphicsEnvironment
的OpenSuse实现可能取决于特定窗口管理器的选择。你必须尝试找到最佳的。
附录:@bouncer评论,“我使用了Gnome窗口管理器,导致问题。切换到KDE后,问题解决了。”另请参阅10 things to do after installing openSUSE 12.3。