我有一个JPanel v。下面的函数创建了一个名为window的全屏Jframe,它将以这个JPanel为特色。我有:
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());
}
这适用于为代码编写的默认渲染。但是,选择使用JOGL的GL渲染器会使全屏帧变为空白,我会看到一个白色屏幕。您必须切换标签,然后按“开始”才能绘制面板。我尝试使用:
更改窗口的背景Container c = window.getContentPane();
c.setBackground(Color.yellow);
虽然没有做任何事情,但仍然有白屏。 (虽然在我调试时,我可以看到background属性已成功应用。)
同时点击第二个屏幕的空白区域(窗口位于第一个屏幕上),甚至单击“开始”按钮,SOMETIMES会使框架变为黑色,之后我的鼠标适配器无法工作。 (这里究竟会发生什么,我该如何调查?)其他时候,它与Alt-tab具有相同的效果。
在Java中没有做太多Swing的事情而且我有点迷失。看到它似乎在一个渲染器上工作正常而不是另一个渲染器,表明它与GL渲染器有关,但渲染器在我的非全屏模式下渲染JPanel时工作正常;另外我的理解是,渲染器的作用仅仅是缓冲我的JPanel上的视频。(我的意思是渲染器的功能,对吧?)所以可能是某些设置没有在上面指定的情况,但是原始渲染器负责处理它。有什么建议吗?
编辑:不用说,取出window.add(v)将使帧渲染正常,并且更改帧背景等的结果以前不起作用,现在将在帧上可见。