2011-05-27 16 views
3

現在、Linuxで動作するJavaでフルスクリーンウィンドウを作成しようとしています。実際にはJFrameをフルスクリーンにすることができますが、フレームがデコレーションされていない場合は元のウィンドウに再び戻れません。窓が飾られている場合、私は元のサイズに戻ることができます。GraphicsDevice - フルスクリーンから戻ることができません

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
    GraphicsDevice gs = ge.getDefaultScreenDevice(); 
    ... 
    f.setUndecorated(true);//If set Window can't return to original size 
    gs.setFullScreenWindow(f); 

    gs.setFullScreenWindow(null);//Doesn't work! 

これを解決する方法はありますか?

答えて

0

デコレートされていないフルスクリーンフレームをウィンドウモードに確実に変更することはできません。私は2つのJFrameを作成することをお勧めします.1つはフルスクリーンで、もう1つはウィンドウです。ウィンドウモードに戻す場合は、ウィンドウ枠にコンテンツペインを追加します(これにより、フルスクリーンフレームから自動的に削除されます)。

windowedFrame.setContentPane(fullScreenFrame.getContentPane()); 
windowedFrame.pack(); 
windowedFrame.setVisible(true); 
fullScreenFrame.dispose(); 
+0

これは良いアイデアですが、小さな問題で。私はVLCJを使用していて、窓枠に戻ってビデオを黒くしています!画像はまったくありません。 – mundu

+0

@mundu、私は 'JDialog'フルスクリーンを作ろうとしたときにそれを見ましたが、' JFrame'でいつもうまく働いています。 – finnw

+0

私は現在JFrameとCanvasを使ってビデオフレームをペイントしています。それらは次のコマンドと同期しています。 'mediaPlayer = factory.newEmbeddedMediaPlayer(); mediaPlayer.setVideoSurface(factory.newVideoSurface(canvas)); ' – mundu

2
changeFrameFullScreenMode(Frame app){ 
    GraphicsDevice gd = GraphicsEnvironment 
    .getLocalGraphicsEnvironment().getDefaultScreenDevice(); 
    if (gd.getFullScreenWindow() == null){ 
    app.dispose(); 
    app.setUndecorated(true); 
    gd.setFullScreenWindow(app); 
    app.setVisible(true); 
    }else{ // back to windowed mode 
    app.dispose(); 
    app.setUndecorated(false); 
    gd.setFullScreenWindow(null); 
    app.setVisible(true); 
    } 
} 
+0

このコードについてもう少し詳細を教えてください。 – Heskja

関連する問題