簡體   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