在我的应用程序中,我有2个窗口(jframe),一个用于控制,一个用于显示事物(如powerpoint演示模式)。
如何指定在屏幕号中打开一个窗口。 1,另一个在屏幕中打开。 2当我启动应用程序时?
下面的方法以某种方式工作,但事情是第二个屏幕上的窗口始终最大化,我不希望它最大化。但似乎连接GraphicsDevice和JFrame的唯一方法是名为setFullScreenWindow的函数。
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" );
}
}
答案 0 :(得分:2)
您可以使用GraphicsDevice定义JFrame。
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
for (int j = 0; j < gs.length; j++) {
JFrame f = new JFrame(gs[j].getDefaultConfiguration());
// Rest of the code
}
答案 1 :(得分:1)
如果屏幕形成一个大的虚拟屏幕,则可以使用具有以下边界的GraphicsConfiguration:
这些是3台并排的显示器。所以:
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gds = ge.getScreenDevices();
for (GraphicsDevice gd : gds) {
int x = gd.getDefaultConfiguration().getBounds().x;
int y = gd.getDefaultConfiguration().getBounds().y;
JFrame frame = new NewJFrame();
frame.setLocation(x, y);
frame.setVisible(true);
}