Я пытался получить http://docs.oracle.com/javafx/2/get_started/fxml_tutorial.htm работает в clojure.Clojure - как определить public mutable members, используя deftype?
я обнаружил, что, опуская @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 сможет добраться доконтроллера, доступ к которому обычно разрешен только с помощью аннотации @FXML
.
Таким образом, я пытаюсь сделать свой класс контроллера на основе clojure общедоступными изменяемыми полями, но в последние несколько часов охоты через gen-class и deftypes я не могу найти способ заставить его работать. Мне удалось получить доступ к final
(по умолчанию) полям deftype из тестового кода Java, но единственное онлайн-обсуждение, которое я видел, говорит о том, что у вас не может быть общедоступных и изменяемых полей и попробовать gen-class. Ну, я не могу найти это в gen-классе, и все примеры gen-class, которые я смог найти, используют поля класса только изнутри clojure; Я не уверен, как определить состояние: в gen-классе, так что он доступен из java, и я не знаю, как сделать их изменяемыми и общедоступными.
Следующим шагом будет попытка аннотации clojure, а затем использование поля fx: script вместо fx: controller для определения обратного вызова clojure ... но я хочу убедиться, что он выполним/не выполним с помощью deftype или gen -класс сначала.
Так может кто-нибудь сказать мне, можно ли сделать класс, доступный для Java, с общедоступными изменяемыми полями в clojure?
Спасибо.
Спасибо, это чувство, которое я получаю. Мне пришло в голову, может быть, есть еще один способ заставить fxml поговорить с объектами Java через свойства, сеттеры, геттеры и т. Д., Но я пока не нашел этого. – Sonicsmooth
Теперь вы можете просто добавить ту же @FXML-аннотацию (возможно, это было невозможно на момент написания) – Rick77