我一直在尝试让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 寻找时,我找不到让它工作的方法。我能够final
从 java 测试代码访问(默认)deftype 字段,但我看到的唯一在线讨论说你不能有公共和可变字段,并尝试 :gen-class。好吧,我在 gen-class 中也找不到,而且我能找到的所有 gen-class 示例都仅使用 clojure 中的类字段;我不确定如何在 :gen-class 中定义 :state 以便可以从 java 访问它,而且我不知道如何使这些可变和公开。
我的下一件事是尝试 clojure 注释,然后使用 fx:script 字段而不是 fx:controller 来定义 clojure 回调......但我想确保它首先使用 deftype 或 gen-class 是可行/不可行的。
那么有人可以告诉我是否可以在 clojure 中创建一个具有公共可变字段的 Java 可访问类?
谢谢。