GraphicsDevice - не может вернуться из полноэкранного режима - PullRequest
3 голосов
/ 27 мая 2011

В настоящее время я пытаюсь сделать полноэкранное окно на Java, работающее в Linux. Дело в том, что я могу на самом деле сделать JFrame полноэкранным, но если кадр установлен без отделки, он не может вернуться к исходному окну снова. Если окна украшены, я могу вернуться к исходному размеру.

    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!

Есть идеи, как это решить?

Ответы [ 2 ]

2 голосов
/ 28 мая 2012
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 голосов
/ 27 мая 2011

Не думаю, что вы можете надежно перевести неокрашенный полноэкранный кадр обратно в оконный режим.Я предлагаю создать два JFrame s, один полноэкранный, а другой оконный.Если вы хотите вернуться в оконный режим, добавьте панель содержимого в оконный фрейм (это автоматически удалит его из полноэкранного фрейма), например,

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