2012-09-02 100 views
0

我這是怎麼一個JFrame設置爲全屏模式:JFrame全屏聚焦。

//set full screen    

frame.dispose(); 
frame.setUndecorated(true); 
screenDevice.setFullScreenWindow(frame); 
frame.setVisible(true); 

//reset to window mode 

frame.dispose(); 
screenDevice.setFullScreenWindow(null); 
frame.setUndecorated(false); 
frame.setVisible(true); 

但是,當我顯示任何對話框,如設置對話框,對話框和全屏幕邊框的東西都失去了他們的FOUCS和消失在屏幕上。然後,我需要點擊任務欄圖標才能獲得焦點。

如何解決這個問題?謝謝。

編輯:

想,如果有這全屏窗口的菜單欄中的JMenuItem的話,我想提出可見設置的JDialog通過單擊這樣的菜單項:

settingsMenuItem.addActionListener(new ActionListener() { 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     settingsDialog.showSettingsDialog(); 
    } 
}); 

的settingsDialog全屏模式下屏幕上不顯示全屏。在窗口模式下它工作正常。

回答

3

如果你想設置你的JFramemaximized爲什麼不利用這一點:

frame.setExtendedState(Frame.MAXIMIZED_BOTH); 
+0

我已經試過你的建議。我想設置全屏模式,而不是最大化狀態。 – Sanjeev

+1

@sanjeev:你已經有'frame.setUndecorated(...);'設置爲'true',因此建議。此外,請考慮爲您提供代碼的[SSCCE](http://sscce.org),以便我們更好地瞭解您的問題 – Sujay

+1

@Sanjeev:另請參見['FullScreenTest'](http://stackoverflow.com/a/7457102/230513)。 – trashgod

1
JFrame frame = new JFrame(); 
GraphicsDevice window = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0]; 

//The number in the brackets decides what monitor the window gets "full-screened" to. 0 is the first, 1 is the second, ect.   
frame.setUndecorated(true);  
window.setFullScreenWindow(frame);  
frame.setVisible(true);  
frame.requestFocus();