http://docs.oracle.com/javafx/2/get_started/fxml_tutorial.htmを clojure で実行しようとしています。
@FXML
Javaバージョンの注釈を省略して公開することで、次のことを発見しました。
public class FXMLExampleController {
@FXML private Text actiontarget;
@FXML protected void handleSubmitButtonAction(ActionEvent event) {
actiontarget.setText("Sign in button pressed");
}
}
に:
public class FXMLExampleController {
public Text actiontarget;
public void handleSubmitButtonAction(ActionEvent event) {
actiontarget.setText("Sign in button pressed");
}
}
...ボタンをクリックしても基本的に機能し、fxml はコントローラーのpublic Text actiontarget
にアクセスできます。コントローラーのアクセスは通常、@FXML
注釈を介してのみ有効になります。
そのため、clojure ベースのコントローラー クラスにパブリックな可変フィールドを持たせようとしていますが、最後の数時間、:gen-class と deftypes を調べても、それを機能させる方法が見つかりません。Java テスト コードから (デフォルトの) deftype フィールドにアクセスできましfinal
たが、私が見た唯一のオンライン ディスカッションでは、public および mutable フィールドを持つことはできず、:gen-class. まあ、gen-class でもそれを見つけることはできません。私が見つけたすべての gen-class の例では、clojure 内からのみクラス フィールドを使用しています。java からアクセスできるように :gen-class で :state を定義する方法がわかりません。また、それらを変更可能にして公開する方法もわかりません。
私の次のことは、clojure アノテーションを試してから、fx:controller ではなく fx:script フィールドを使用して clojure コールバックを定義することです...しかし、最初に deftype または gen-class で実行可能/実行不可であることを確認したいと思います。
クロージュアで公開可変フィールドを持つJavaアクセス可能なクラスを作成することが可能かどうか誰か教えてもらえますか?
ありがとう。