JFrame全屏聚焦。

时间:2012-09-02 04:59:32

标签: java swing focus jframe fullscreen

这就是我将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);

但是,当我显示任何对话框时,如设置对话框,对话框和全屏框架都会丢失其内容并在屏幕上消失。然后我需要单击任务栏图标以获得焦点。

如何解决这个问题?谢谢。

编辑:

假设在这个全屏窗口的菜单栏中有一个JMenuItem,那么我通过单击这样的menuitem来显示设置JDialog:

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

在全屏模式下,屏幕上不显示settingsDialog和全屏。在窗口模式下它可以正常工作。

2 个答案:

答案 0 :(得分:3)

如果您想将JFrame设置为maximized,请不要使用此选项:

frame.setExtendedState(Frame.MAXIMIZED_BOTH); 

答案 1 :(得分: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();