Java:Linux中的图形界面

5

在Linux上,Java是否需要安装X窗口才能显示全屏图形?

4个回答

6

“全屏图形”这个词有点含糊。

无论如何,显然有一个正在进行的项目来从Java中访问帧缓冲区:Framebuffer Toolkit

该项目的目标是产生一些代码,这些代码是基于轻量级帧缓冲区的同行实现,适用于AWT和Swing。这些代码的目标是消除对X或其他图形层的依赖,以便将图形重定向到帧缓冲区(例如原始缓冲区、VNC等)。这个示例实现将优先选择纯Java解决方案,并提供公共扩展点,以便必要时输入本机资源。

请参见项目提案:fbtoolkit


5
其他回答者似乎认为“Java中全屏图形”必须意味着“AWT的工作实现”。当然,并不一定如此,因为使用Java而不使用AWT是完全可能的(有些人甚至会认为这是可取的)。 Cairo是一个可以从Java中使用的2D图形渲染库,也可以在没有X11的情况下使用。乍一看,它似乎应该可以为这种方案进行配置。你需要将其配置为使用OpenGL渲染,并提供一个合适的非X11 OpenGL实现(例如带有'fbdev'设备驱动程序的MesaGL)。 SDLJava是一个流行的C语言SDL游戏开发库的Java端口。虽然它自2005年以来似乎没有更新,但也应该能够做到你所要求的,如果你遇到任何问题,可能无法得到支持。
作为替代方案,你始终可以使用一些相当简单的C代码来打开和配置帧缓冲区,然后使用JNI将内存映射帧缓冲区作为直接模式ByteBuffer返回,这样你就可以直接绘制到它上面。

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

该帖子的目标是使用图形界面,而不是使用JRE的无头版本。 - user6754053

1
在嵌入式设备(例如树莓派)上,如果您不想通过标准的Java AWT + Swing进行完整的X11操作,则可以使用https://github.com/ttww/JavaFrameBuffer项目直接写入帧缓冲区。

另一种选择可能是使用例如SWT on GTK或Qt Jambi来写入帧缓冲区(GTK和QT都可以直接使用FB而无需X11)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接