1.0.2 • Published 2 years ago

cljavafx v1.0.2

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

cljavafx

Este projetinho é minha tentativa de integrar JavaFX e Clojure de uma forma que seja realmente prática. O objetivo a atingir é um fluxo de trabalho que seja melhor que a alternativa que eu uso hoje, a saber, JavaFX + Scala.

O obstáculo

FXML usa campos anotados com @FXML pra injetar os componentes no controlador. Em Clojure isso é impossível, porque:

1) Podemos criar campos com deftype ou defrecord, mas não é possível criar um construtor sem argumentos nesse caso, e o FXML Loader não trabalha sem um construtor de zero argumentos.

2) Com gen-class podemos criar o construtor que quisermos, mas sem campos.

Minha alternativa no momento: usar gen-class e, ao usar o loader, obter a instância do controlador criada pelo mesmo. Chamar um método nessa instância para passar ao controlador o loader ou o namespace de componentes do loader. E aí chamar os componentes com base nesse namespace.

O método no controlador pode pegar os dados e armazená-los no state usando um atom e um map.

https://stackoverflow.com/questions/25828561/javafx-how-to-get-fxml-controller

https://stackoverflow.com/questions/26962788/fxmlloader-how-to-access-the-components-by-fxid