java - 如何将GUI组件放入OpenGL屏幕

标签 java user-interface opengl jframe jtextarea

我有一个opengl程序,我想在其中放一个文本框/区域,但是我不确定在我的opengl窗口中是否有办法做到这一点。有什么方法可以执行此操作或将其嵌入或可能将​​opengl窗口嵌入到JFrame中吗?

最佳答案

当然,有一种方法-您可以编写自己的呈现给OpenGL的GUI元素。至于是否可以将其嵌入到JFrame中-这取决于您正在使用的库,在LWJGL中,您可以使用Display.setParent进行此操作-需要awt.Canvas,我不知道您是否可以使用Swing组件获得一个。

我认为可以这样做:

import java.awt.Canvas;

import javax.swing.JFrame;
import javax.swing.JTextField;

import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.GL11;

public class CanvasTest {
    public static void main(String[] args) throws LWJGLException, InterruptedException {
        // note that this is a very bare bones
        // proof-of-concept thing. You'd want to 
        // install your own close handlers etc here.
        Canvas openglSurface = new Canvas();
        JFrame frame = new JFrame();
        frame.setSize(800, 800);
        frame.add(openglSurface);
        frame.setVisible(true);
        frame.add(new JTextField("Hello World!"));
        openglSurface.setSize(500, 500);
        Display.setParent(openglSurface);
        Display.create();
        GL11.glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
        GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);
        Display.update();
        Thread.sleep(2000);
        Display.destroy();
    }
}


我实际上没有尝试过此操作,因为我自己从来不需要此操作,但是它应该可以工作。

注意:我现在尝试了。它确实可以工作,但显然需要一些额外的工作才能使其与LayoutManagers等一起使用。

关于java - 如何将GUI组件放入OpenGL屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13145697/

相关文章:

C# GUI,必须显示一个巨大的表格并使其可排序

Opengl:根据 Z 的值,将四边形拟合到屏幕上

java - GWT 2.6-Java 6冲突

java - 在 Java Swing 中生成双击鼠标事件

java - 无法从 POST 请求返回数据/响应

java - MediaPlayer 的 WiFi 连接丢失时没有错误事件

java - 我如何在Java GUI中使用图像

ruby-on-rails - 如何在Rails中对公共(public) View 代码进行分组和干燥

opengl - 以不是刷新率倍数的帧速率播放视频。

java - 如何在 GLSL 中读取全范围的 32 位整数纹理