在双显示器配置的特定屏幕中显示 JFrame
2022-08-31 20:52:59
我有一个双显示器配置,如果找到我的GUI,我想在特定显示器上运行它。我试图通过我的屏幕设备的对象创建我的窗口,但它不起作用,框架仍然显示在主屏幕上。JFrame
GraphicConfiguration
如何设置必须显示相框的屏幕?
我有一个双显示器配置,如果找到我的GUI,我想在特定显示器上运行它。我试图通过我的屏幕设备的对象创建我的窗口,但它不起作用,框架仍然显示在主屏幕上。JFrame
GraphicConfiguration
如何设置必须显示相框的屏幕?
public static void showOnScreen( int screen, JFrame frame )
{
GraphicsEnvironment ge = GraphicsEnvironment
.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
if( screen > -1 && screen < gs.length )
{
gs[screen].setFullScreenWindow( frame );
}
else if( gs.length > 0 )
{
gs[0].setFullScreenWindow( frame );
}
else
{
throw new RuntimeException( "No Screens Found" );
}
}
我修改了@Joseph-gordon的答案,以允许在不强制全屏的情况下实现这一目标:
public static void showOnScreen( int screen, JFrame frame ) {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gd = ge.getScreenDevices();
if( screen > -1 && screen < gd.length ) {
frame.setLocation(gd[screen].getDefaultConfiguration().getBounds().x, frame.getY());
} else if( gd.length > 0 ) {
frame.setLocation(gd[0].getDefaultConfiguration().getBounds().x, frame.getY());
} else {
throw new RuntimeException( "No Screens Found" );
}
}
在此代码中,我假设永远不会返回 null。如果不是这种情况,那么有人请纠正我。但是,此代码可以将其移动到所需的屏幕。getDefaultConfiguration()
JFrame