我可能在这里遗漏了一些简单的东西,但我在其他地方找不到答案。我只想在我的 GWT 代码中显示一个小程序。
操作系统:Windows XP Java:JDK 1.6.0_10 其他:GWT、GWT-Ext 2.0.5
这是小程序(显然简化了测试):
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
显然我缺少一些小程序库,但我已经浏览了 jdk 中的所有 jar,并尝试包括所有列出 JApplet 或 awt 的 jar(plugin.jar、resources.jar、rt.jar、deploy.jar、 javaws.jar)。
另外,我很确定一旦我解决了这个问题,就会有另一个潜伏在它之后,但我会把它留到另一个问题上。
谢谢!
旧版应用程序不是小程序——它是一个胖客户端 Swing 应用程序。我们已经破解了它以作为小程序运行,因为我们的客户想要一个浏览器客户端,这是完成这项工作的最快方式。
我不知道 GWT 是否会接受 JPanel 解决方案 - 该应用程序不是以 GWT 可以解析的任何方式编写的 - 即它没有使用 GWT API,它使用的是 Swing API。AFAIK,将 Swing 与 GWT 混合的唯一方法是以小程序的方式。
我错过了什么吗?