java - 间接绘制AWT/Swing组件?

标签 java swing user-interface awt lwjgl

我想知道...有没有办法从 Frame 外部绘制组件样式/Applet ? 我正在制作一个使用 OpenGL 的应用程序,我需要一个 GUI具有良好的外观,如 AWT 或 Swing。是的,我知道有很多像Nifty这样的库和 TWL ,但我真的想使用 AWT/Swing 的外观。

谢谢。 (抱歉我的英语不好,我是巴西人。)

最佳答案

您可以将组件渲染到图像,即使它不可显示(尽管您必须手动将大小设置为首选大小):

c.setSize(c.getPreferredSize());
BufferedImage img = new BufferedImage(c.getWidth(), c.getHeight(), 
      BufferedImage.TYPE_INT_ARGB);
Graphics2D g = image.createGraphics();
g.setComposite(AlphaComposite.Clear);
g.fillRect(0, 0, c.getWidth(), c.getHeight());
g.setComposite(AlphaComposite.SrcOver);
c.paintComponent(g);
g.dispose();

然后您可以将该图像用作 OpenGL 中的纹理。

当然,这只会给你一个组件的图片;您将无法像与“真正的” Swing 组件一样与它进行交互。

关于java - 间接绘制AWT/Swing组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14842269/

相关文章:

java - 在构造函数中将字符串解析为 Json

java - 从 Grails 应用程序使用 JNI native 库时出现 UnsatisfiedLinkError

java - 如何使客户端-服务器 Java 应用程序在一个端口上发送消息但在另一个端口上接收消息?

Java Jar 控制台应用程序打开 Mac 系统菜单栏

variables - 带有 GUI 的 Powershell 不会设置变量

java - 检查 Java "assembly"?

java - Netbeans GUI 不显示对象

java - 适用于 Android 的 Swing 库?

java - 在 java 中捕获来自 c++ 的输出而不返回

java - 每次我向 JTextArea 添加文本时,如何阻止 Swing 程序调整组件大小