Java Swing - 检测显示JFrame的内容显示在

时间:2015-07-30 07:32:43

标签: java swing jframe fullscreen

我从this question了解到,您可以使用以下代码在swing应用程序中将当前显示作为GraphicsDevice[]

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gd = ge.getScreenDevices();

据我所知,从这里我可以自己设置设备,让用户选择在菜单中使用哪个设备等。我的目标是检测应用程序当前显示在哪个GraphicsDevices中,所以我可以默认为全屏在当前的GraphicsDevice中没有打扰用户。

我正在使用以下代码来全屏显示我的应用程序:

JFrame frame = new JFrame();

// ... when I want to fullscreen:
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
if (gd.isFullScreenSupported()){
    frame.dispose();
    frame.setUndecorated(true);
    frame.setAlwaysOnTop(true);
    gd.setFullScreenWindow(frame);
    frame.setVisible(true);
}

我无法在GraphicsDevice或GraphicsEnvironment API中找到任何内容来获取当前显示JFrame的GraphicsDevice。我知道通过直接定位窗口可能存在黑客攻击(如上面的链接所述),但我想知道是否有更简单/更优雅的解决方案。

1 个答案:

答案 0 :(得分:4)

GraphicsDevice device = jframe.getGraphicsConfiguration().getDevice()