0

私は JavaFX-2 を試していますが、機能の 1 つは、FXML ファイルで Javascript を使用してイベント ハンドラー関数を作成できると言われています。私を悩ませたのは、System クラスにすぐにアクセスできないことです。「java.lang.System」のように、完全に参照する必要があります。コンソールに単純な出力が必要な場合、それは見苦しくなります。また、私の FXML には <?import java.lang.*?> ステートメントがすべて含まれていますが、明らかに <fx:script> タグ内には影響しません。

サンプルコード: (<?language javascript?>ディレクティブに注意してください)

<?xml version="1.0" encoding="UTF-8"?>

<?language javascript?>

<?import java.lang.*?>
<?import java.net.*?>
<?import java.util.*?>
<?import javafx.collections.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<?import javafx.scene.text.*?>

<AnchorPane fx:id="rootPane">
  <fx:script>
    function buttonAction(event){
      java.lang.System.out.println("finally we get to print something.");
      // System.out.println("This wouldn't work even if it wasn't a comment line, anyway");
    }
  </fx:script>
  <children>
    <Button id="close" mnemonicParsing="false" onAction="buttonAction(event)" text="">
      <graphic>
        <ImageView pickOnBounds="true">
          <image>
            <Image url="@../resources/close.png" preserveRatio="true" smooth="true" />
          </image>
        </ImageView>
      </graphic>
    </Button>
  </children>
</AnchorPane>

私の質問は次のとおりです。クラスを <fx:script> にインポートする方法はありますか? 私はActionscript3.0でこれを本当に簡単にやっていたことを覚えています: import flash.events.MouseEvent...

4

2 に答える 2

1

JavaScript ビルトインimportPackageまたはimportClass関数を使用します。

 <fx:script>
    importPackage(java.lang);
    function buttonAction(event){
        System.out.println("finally we get to print something.");
    }
</fx:script>

詳細については、http: //docs.oracle.com/javase/6/docs/technotes/guides/scripting/programmer_guide/index.html#jsimportを参照してください。

于 2012-11-28T12:45:56.530 に答える