【发布时间】:2015-03-17 11:23:19
【问题描述】:
我正在尝试将带有 OpenGL 内容的 GLCanvas 添加到 JPanel。 JPanel 在 JTabbedPane 内。但是当 GLCanvas 在 JPanel 内时,面板只是灰色的。当我将 GLCanvas 直接添加到 TabbedPane 时,一切正常。
这里是工作代码:
JTabbedPane mainPane = frame.getMainPane();
GLCanvas canvas = cogl.getCanvas();
mainPane.add("OGL",canvas);
这里是不工作的代码:
JTabbedPane mainPane = frame.getMainPane();
GLCanvas canvas = cogl.getCanvas();
JPanel panel = new JPanel();
panel.add(canvas);
mainPane.add("OGL",panel);
那么我怎样才能让 GLCanvas 在 JPanel 中工作?
【问题讨论】:
-
这并不奇怪。
GLCanvas直接基于java.awt.Canvas。在轻量级容器中混合使用重型容器总是会导致奇怪的问题,主要与组件的 z 顺序有关(AWT 组件没有 z 顺序的概念)。虽然我知道这是“假设”在 Java 6 中修复的,但我目睹了围绕它考虑使用它的许多“奇怪”问题。最好的选择,不要混合使用重型和轻型组件
标签: java swing jpanel jogl glcanvas