Java:如何创建没有AWT的图形界面?

8

有没有可以在不使用AWT的情况下创建图形的库?
我需要简单的绘图函数(例如绘制一条线)和文本绘制函数,以在内存中创建图形,用于Google应用引擎应用程序。应用引擎不支持AWT。

谢谢!


客户端是否支持SVG?如果是,您可以查看http://java.sun.com/javame/technology/msa/jsr226.jsp - rleir
和rleir的评论一样,Batik可能是一个选项吗?http://xmlgraphics.apache.org/batik/ - Hubert
@AlBlue:这是真的(也很棘手),但很多答案都没有帮助或实际上需要AWT,并且这些答案可以通过快速谷歌来确认。我认为,对于那些快速事实检查表明不正确的答案进行评分下调是公平的。 - BobMcGee
你找到一个好的答案了吗?我已经研究了列表中的所有内容,appengine-awt已死且无法工作,SenseLan不能做需要的事情,针对GAE项目的Batik已死,TinyLine已有一年没有更新,存在错误且无法使用,并且作者需要一周时间才能回复一个简单的电子邮件,而Python也有同样的问题。 - Frodo Baggins
@David 不,我实现了一个简单的类来绘制一些图形,然后我使用了一个Java库将其压缩为PNG格式。我的这个项目现在已经停止了,所以我不能告诉你PNG库的名称。至于绘制文本:我没有找到解决方案。 - Damian
显示剩余2条评论
9个回答

4

除非你想实现自己的图像类(比如位图)和线条、形状、图像的渲染算法,否则不需要这样做。

如果你有计算机图形学和光栅化方面的经验,这可能不是很难,但如果没有相关经验,那么这将会超出你的能力范围。


这就是我所做的,它运行得很好,但问题在于渲染文本。我认为这是我无法通过编写自己的代码轻松解决的事情,至少不像画线或圆形那样简单。 - Damian
@Damian:文本渲染很复杂,我不确定你能找到简单的解决方案。你可以尝试使用AWT的非本地部分作为标准包——我记得在某个地方看到了完全软件(无GPU)实现了很多绘图功能。他们正在使用它进行基准测试和展示并行方法。 - BobMcGee
我找到了这个:http://fonteditor.org/ ... 我会尽快试一下。 - Damian

2
您也可以尝试使用appengine-awt项目,不过它还处于实验阶段。

1

使用Batik for GAE,它是FOP在GAE上的依赖项。

您还可以在Google应用程序引擎错误跟踪器上跟踪问题,其他人在评论中分享了其他想法。


1

你可以尝试使用SenseLan。在要求部分,它说他们不使用awt或ImageIO。当然,还有Images api,但它似乎在提供的功能方面相当有限。

编辑:

看起来有几个Python可能性可以为您提供一些有限的绘图功能。您可以编写适当的图像功能作为Python Web服务,并将应用程序的其余部分保留在Java中:

  1. 在Google App Engine(GAE)中替换PIL(ImageDraw)的功能
  2. http://denislaprise.com/2008/08/21/drawing-images-on-google-app-engine/

Senselan很好,但它只能将图像从一种格式转换为另一种格式。我需要的是简单的图形函数(如绘制线条)和绘制文本。 - Damian
正如标题所述,它必须是一个Java库。我的应用程序已经使用Java开发完成。 - Damian
@Damian:Jhython--在Java中运行Python代码,让你轻松跨越鸿沟。 - BobMcGee

0

看一下Javadoc文档:http://java.sun.com/j2se/1.4.2/docs/guide/2d/spec.html 我不能使用AWT。 - Damian

0

对我们来说没用,开发者似乎也基本上放弃了它。 - Frodo Baggins

-1
如果你可以在GAE上使用Python而不是Java,那么就有pybmp

-1

我犹豫是否要提及PJA,它似乎只有在AWT类存在的情况下才能工作,但安全管理器会阻止您使用它们。


-1

Google Web Toolkit 包含一个漂亮的图形库,专为与 Google 应用引擎进行接口设计。

编辑以澄清:Google 应用引擎是专为在 Web 上托管应用程序而设计的。您需要设计可以在浏览器中运行的图形。为此,您需要使用 Web 语言(例如 Javascript)编写代码。Google Web Toolkit 包含一个 Java 图形库,可以编译成 Javascript,节省了您自己编写 Javascript 的工作。


但我需要在服务器上创建图片。 - Damian

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