3 回答

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊
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" );
}
}

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
以允許在不強(qiáng)制全屏的情況下實(shí)現(xiàn)此目的:
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" );
? ? }
}
在這段代碼中,我假設(shè)getDefaultConfiguration()永遠(yuǎn)不會(huì)返回null。如果不是這種情況,請(qǐng)有人糾正我。但是,此代碼可將您JFrame移至所需的屏幕。

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊
閱讀屏幕2上有關(guān)JFrame.setLocationRelativeTo的文檔后,一種更清潔的解決方案
public void moveToScreen() {
setVisible(false);
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] screens = ge.getScreenDevices();
int n = screens.length;
for (int i = 0; i < n; i++) {
if (screens[i].getIDstring().contentEquals(settings.getScreen())) {
JFrame dummy = new JFrame(screens[i].getDefaultConfiguration());
setLocationRelativeTo(dummy);
dummy.dispose();
}
}
setVisible(true);
}
此功能可用于在屏幕之間切換應(yīng)用程序窗口
添加回答
舉報(bào)