У меня есть JPanel v. Функция ниже создает полноэкранный Jframe, называемый окном, в котором будет представлен этот JPanel. У меня есть:Undecorated full-screen JFrame, показывающий JPanel, не перерисовывается до тех пор, пока Alt-tab
protected final void fullScreenMulti(final JPanel v) {
final JFrame window= new JFrame();
window.setUndecorated(true);
window.add(v);
//window.setVisible(true);
.
.
.
window.validate();
window.repaint();
GraphicsDevice gdev = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
gdev.setFullScreenWindow(window);
DisplayMode mode = gdev.getDisplayMode();
window.setSize(mode.getWidth(), mode.getHeight());
}
Это работает для рендеринга по умолчанию, который написан для кода. Однако, выбрав GL-рендеринг, который использует JOGL, делает полноэкранный кадр пустым, и я получаю белый экран. Вам нужно будет включить и выключить вкладку или нажать «Пуск», чтобы панель была раскрашена. Я попытался изменить фон из окна с помощью:
Container c = window.getContentPane();
c.setBackground(Color.yellow);
, что ничего не делает, хотя и я все еще получаю белый экран. (Хотя, когда я отлаживаю, я вижу, что свойство фона успешно применяется.)
Также нажмите на пустую область второго экрана (окно размещено на первом экране) или даже нажатие кнопки «Пуск», SOMETIMES делает кадр черным, а мой адаптер мыши не работает после этого. (что конкретно может случиться здесь, как я могу его исследовать?) В других случаях он имеет тот же эффект от Alt-tab.
Не сделали много вещей Swing на Java и я немного потерян. Увидев, что он работает нормально на одном рендерере, а не на другом, предполагает, что он имеет какое-то отношение к средству визуализации GL, но рендеринг отлично работает при рендеринге JPanels в моем не полноэкранном режиме; Также я понимаю, что роль рендеринга заключается в том, чтобы просто буферизовать видео, которое показано на моем JPanel. (Я имею в виду, что это делают визуализаторы, верно?), Поэтому, вероятно, это случай, когда некоторые настройки не указаны выше, но оригинальный рендерер позаботится об этом. Какие-нибудь предложения, что это может быть?
Редактирование: само собой разумеется, извлечение window.add (v) сделает рендеринг кадра прекрасным, а результат изменения фона кадра и т. Д., Который ранее не работал, теперь будет виден на кадре.
Для получения более подробной помощи отправьте сообщение [MCVE] (http://stackoverflow.com/help/mcve) (минимальный полный проверяемый пример) или [SSCCE] (http://www.sscce.org/) (Short , Self Contained, Правильный пример). –
Спасибо, но это масштабный проект. Я добавил бит, который, как мне показалось, был уместным. Я жду первоначального диагноза для подачи других бит. это не то, что вы должны делать? –
* «Я добавил бит, который, как мне показалось, релевантным» * Докажите, что это актуально, вызвав его из 'main (String [)', чтобы показать проблему на экране. В противном случае я (и, возможно, другие) скептически отношусь к вашему анализу, что отображается соответствующий код *. –