2009-12-22 57 views
0

我正在開發Flex應用程序,我需要從Flex中打開Java Applet(例如,單擊按鈕)。特別是我想打開imageJ,一個特定的圖像程序,可以作爲應用程序,applet或集成到網頁中。有沒有辦法從Flex調用它?我見過一些教程,解釋如何從Flex調用另一個Java文件中的單個函數,但我不確定這是我正在尋找的。 謝謝您的回答, 歡呼聲,從Flex調用Java Applet

大衛

回答

1

我不知道是否有更好的辦法,但如果我這樣做,我會寫一個JavaScript函數,將加載Java小程序(可以像document.write("<object …>")一樣簡單),然後使用Flex的ExternalInterface來調用該JavaScript。

+0

是的 - 你真的想要用ExternalInterface – Goyuix 2010-03-11 23:06:43

0

在您的applet中公開一個公用方法,flex會調用它。您可以通過以下方式加載小程序。這是一個示例程序,調用Java方法,並從Java中的值,你可以做修改根據自己的需要

<object 
    id = "MyApplet" 
    name = "Some name" 
    classid = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="0" height="0"> 
    <PARAM NAME = "CODE" VALUE = "com.my.applet.MyApplet.class" > 
    <PARAM NAME = "CODEBASE" VALUE = "." > 
    <PARAM NAME = "ARCHIVE" VALUE = "applet-client.jar" > 
    <PARAM NAME = "cache_option" VALUE="No"> 

    <PARAM NAME = "java_version" VALUE="1.6+"> 
    <param name = "type" value = "application/x-java-applet;version=1.6"> 
    <comment> 
     <embed 
      name = "MyApplet" 
      type = "application/x-java-applet;version=1.6" \ 
      CODE = "com.my.applet.MyApplet.class" \ 
      JAVA_CODEBASE = "." \ 
      ARCHIVE = "applet-client.jar" 
      cache_option = "No" 
      scriptable = false 
      pluginspage = "http://java.sun.com/products/plugin/index.html#download" 
      width="0" height="0" 
     > 
      <noembed> 
      </noembed> 
     </embed> 
    </comment> 

</object> 

在你的HTML文件上(我沒有解釋一切),applet將被下載並準備使用。現在點擊你的Flex應用程序上的按鈕,你應該有下面的東西。

var returnedStringFrom java:String=ExternalInterface.call("document.MyApplet.functionInJava",stringParam); 

注:MyApplet是在上面的對象聲明的名稱,functionInJava是在Java類com.my.applet.MyApplet公共職能。它接受一個參數並返回一個字符串參數。 Java程序如下所示。

package com.my.applet; 

public class MyApplet{ 
//other methods.. 

public String functionInJava(String stringpm){ 

// your implementation 
return "SomeString"; 
} 
} 

快樂編碼。