我从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。我知道直接放置窗口可能会引起黑客攻击(如上面的链接中所述),但我想知道是否有更简单/更优雅的解决方案。

最佳答案

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

07-26 09:27