ブラウザを起動できますか

ブラウザ起動(アプレット)の場合

javafx.stage.AppletStageExtensionのshowDocument関数は、 URLとtarget(ウインドウまたはフレームの)を指定して ブラウザを起動することができます。 ただし、この関数はアプレットとして動作しているときしか 効きません。

例:

AppletStageExtension{}.showDocument(url,"_blank");

標準起動・Web Start起動の場合

javafx.stage.AppletStageExtensionのshowDocument関数は、 アプレットでのみ有効です。 では、標準起動及びWeb Start起動ではどうしましょう。 ここではjava.awt.Desktopのbrowse(URI uri) メソッドを使う方法を紹介します。 ただしDesktopクラスはJava6からのAPIなので、普通には呼び出せません。 JavaFX 1.2 SDKではJava6 APIを使えないからです。 以下の例はその問題をリフレクションで対応しています。

例:FXUtils.fx

import java.lang.Class;
import java.lang.Throwable;
import java.lang.reflect.Method;
import java.net.URI;

public function browse(uriAsString:String):Void{
  try{
    var cls:Class = Class.forName("java.awt.Desktop");

    //public static synchronized java.awt.Desktop java.awt.Desktop.getDesktop()
    //を呼び出してインスタンスを取得します。
    var method:Method = cls.getMethod("getDesktop");
    var objDesktop = method.invoke(null);

    //public void java.awt.Desktop.browse(java.net.URI) throws java.io.IOException
    //を呼び出してデフォルトのブラウザを起動します。
    method = cls.getMethod("browse", Class.forName("java.net.URI"));
    method.invoke(objDesktop,new URI(uriAsString));
  }catch(e:java.io.IOException){
    e.printStackTrace();
  }catch(e:Throwable){
    e.printStackTrace();
  }
}

上の関数を、呼び出す例が次の例です。アプレットで動作しているときは、 AppletStageExtensionを使い、そうでないときDesktop.browse()を使っています。

例:

if(__PROFILE__ == "browser"){
  AppletStageExtension{}.showDocument(url,"_blank");
}else{
  FXUtils.browse(url);
}


カウンター

Home