繁体   English   中英

如何在GWT页面中显示java applet?

[英]How to display java applet inside GWT page?

我可能在这里遗漏了一些简单的东西,但我在其他地方找不到答案。 我只是想在我的GWT代码中显示一个applet。

操作系统:Windows XP Java:JDK 1.6.0_10其他:GWT,GWT-Ext 2.0.5

这是applet(显然简化了测试):

package foo.applet;

import javax.swing.JApplet;
import java.awt.Graphics;

public class HelloApplet extends JApplet 
{
    public void paint(Graphics g) 
    {
        g.drawRect(0, 0, 
                   getSize().width - 1,
                   getSize().height - 1);
        g.drawString("Hello world!", 5, 15);
    }
}

这是调用它的代码:


package foo.applet;

import com.google.gwt.user.client.ui.HTML;
import com.gwtext.client.widgets.Panel;


public class AppletPanel extends Panel 
{
public AppletPanel()
{
    HTML applet = new HTML();
    applet.setHTML("<applet name=\"HelloApplet\" code=\"HelloApplet.class\" width=\"300\" height=\"300\"" );
    this.add(applet);
}

}

当我以托管模式启动应用程序时,jvm崩溃(与Sun提交事件1425130)。

当我尝试编译GWT代码以在浏览器中运行时,我得到:

        [ERROR] Errors in 'file:/C:/<blah>/applet/HelloApplet.java'
           [ERROR] Line 3: The import javax.swing cannot be resolved
           [ERROR] Line 4: The import java.awt cannot be resolved
           [ERROR] Line 6: JApplet cannot be resolved to a type
           [ERROR] Line 8: Graphics cannot be resolved to a type
           [ERROR] Line 11: The method getSize() is undefined for the type HelloApplet
           [ERROR] Line 12: The method getSize() is undefined for the type HelloApplet

显然我缺少一些applet库,但是我已经浏览了jdk中的所有jar并尝试包含列出JApplet或awt的所有jar(plugin.jar,resources.jar,rt.jar,deploy.jar, javaws.jar)。

此外,我很确定一旦我解决了这个问题,就会有另一个潜伏在它之后,但我会将其保存为另一个问题。

谢谢!


遗留应用程序不是applet - 它是一个胖客户端Swing应用程序。 我们已经将其作为applet运行,因为我们的客户需要一个浏览器客户端,这是完成这项工作的最快方法。

我不知道GWT是否会接受JPanel解决方案 - 该应用程序不是以GWT可以解析的任何方式编写的 - 即它不使用GWT API,而是使用Swing API。 AFAIK,将Swing与GWT混合的唯一方法是以applet方式。

我错过了什么吗?

您是否正在尝试GWT编译您的applet?

这不起作用,因为GWT编译(只是从Java转换为Javascript)只支持少数Java库,当然也不支持applet。

确保您的applet不在GWT源路径上(将其移动到另一个包)。

参考: http//code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=RefJreEmulation

不要使用GWTCompiler来编译您的applet代码。 我建议创建一个仅包含applet代码的第二个模块(或项目)。 使用标准Javac编译器(或您的IDE / ant)将其编译为单独的JAR

GWTCompiler使用Java库的子集,并且只应用于生成最终将作为Javascript运行的代码。

谷歌找到了这个 其中一个回复说:“上一张海报是正确的,外壳无法处理Flash或Applet等嵌入式内容。用于在shell内部运行浏览器的SWT组件有一些限制。错误报告已与这个问题,您可能需要留意它以备将来更新。“

看起来无法完成。

我在研究gwt应用程序时发现了这一点,即使这是一个老线程,我想发布一个方法来运行gwt内的applet。

首先创建两个不同的项目,一个用于applet,另一个用于gwt 让你的applet正常。

jar你的小程序。

然后用jarsigner你的.jar

正常创建你的gwt模块。

嵌入applet我使用带有applet标签的gwt HTML对象,如下所示:

(applet MAYSCRIPT code = 'com.myapplet.MyApplet' id ='myApplet' jnlp_href = '/spplets/MyApplet.jnlp', width=500, height=400)(/applet)

只需将HTML小部件添加到contentPanel,即可完成gui部分。

applet .jar需要进入你的gwt项目的/ war。

.jar一起,您将需要编写.jnlp文件来启动applet。

这将在gwt中嵌入applet并以托管或生产模式运行它。 关键是.JNLP你的.JAR并用.JNLP启动它

轻量级应用程序可能会混合GWT和JNLP。 然后我们可以透明地将更大的罐子放到人们的机器上。 作为一个例子,我想使用Batik工具包或其他与SVG相关的好东西在我的GWT应用程序中使用SVG,而不是被迫仅使用png或其他栅格格式。

  • Tyro - 您也可以通过bob.futrelle@gmail.com将您的想法发送给我

“导入javax.swing无法解决” - 抱歉,我不是GWT maven,但是这个错误是classpath-esque。 听起来像GWT找不到你的JVM的rt.jar。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM