Java:Linux 中的图形

Posted

技术标签:

【中文标题】Java:Linux 中的图形【英文标题】:Java: Graphics in Linux 【发布时间】:2010-01-17 09:33:15 【问题描述】:

是否必须在 Linux 机器上安装 X-Windows 才能让 Java 显示全屏图形?

【问题讨论】:

【参考方案1】:

好吧,“全屏图形”有点模糊。

无论如何,显然正在努力从 Java 访问帧缓冲区:Framebuffer Toolkit。

这个项目的目标是产生一段代码,它是 AWT 和 Swing 的基于帧缓冲区的轻量级对等实现。 此代码的目标是消除对 X 或 其他图形层,以便图形可以重定向到 帧缓冲区(例如原始缓冲区、VNC 等)。这个例子 实现将更喜欢纯 Java 解决方案,公共 可用于根据需要输入本机资源的扩展点。

见Project proposal: fbtoolkit。

【讨论】:

【参考方案2】:

其他回答者似乎认为“Java 中的全屏图形”必然意味着“AWT 的有效实现”。当然,这不一定正确,因为在没有 AWT 的情况下使用 Java 完全有可能(有些人甚至会说是可取的)。

Cairo是一个二维图形渲染库,可以从Java中使用,也可以不使用X11使用。乍一看,似乎应该可以针对这种情况进行配置。您需要将其配置为使用 OpenGL 渲染,并提供合适的非 X11 OpenGL 实现(例如带有“fbdev”设备驱动程序的 MesaGL)。

SDLJava 是流行的 C SDL 游戏开发库的 Java 端口。这也应该能够满足您的要求,尽管它似乎自 2005 年以来没有更新,因此如果您对它有任何问题,可能不会提供支持。

作为替代方案,您总是可以使用一些相当简单的 C 代码来打开和配置帧缓冲区,然后使用 JNI 将内存映射的帧缓冲区作为直接模式 ByteBuffer 返回,这样您就可以直接绘制到它。

【讨论】:

【参考方案3】:

要在屏幕上真正显示图形,是的。 Bud 有一个 JRE 的无头版本,仅用于运行它。您不会看到任何图形输出,但它会运行。 或者,您可以远程登录并使用 X 转发在服务器上运行 java 代码,但让客户端处理显示图形。

【讨论】:

OP 的目标是使用图形,而不是使用 JRE 的无头版本。【参考方案4】:

在 Raspberry Pi 等嵌入式设备上,如果您不想通过标准 Java AWT + Swing 完成完整的 X11,那么这个直接写入帧缓冲区的 https://github.com/ttww/JavaFrameBuffer 项目似乎很有趣。

另一种方法可能是使用例如GTK 或 Qt Jambi 上的 SWT,用于写入帧缓冲区(GTK 和 QT 都可以直接使用没有 X11 的 FB)。

【讨论】:

以上是关于Java:Linux 中的图形的主要内容,如果未能解决你的问题,请参考以下文章

02 图形化界面中的shell 编程

java中的图形和图形2D

如何运行mininet2.2.1中的图形界面

linux关闭x11图形化界面

Java 在PPT中创建SmartArt图形读取SmartArt图形中的文本

Java 在PPT中创建SmartArt图形读取SmartArt图形中的文本