MVVM WPF アプリを GroovyFX に適合させたいと考えています。私は Groovy についても GroovyFX 自体についてもあまり経験がなく、入手できる情報もそれほど多くありません。
デザインは、パネルが内側にあるメイン ウィンドウで構成されます。たとえば、ユーザーがボタンを押すと、アプリは中央パネルの子を削除し、ターゲット ビューに適合する新しい「ノード ツリー」を挿入します。
コードを見てみましょう
import groovyx.javafx.GroovyFX
import groovyx.javafx.SceneGraphBuilder
import static groovyx.javafx.GroovyFX.start
import javafx.fxml.FXMLLoader
import javafx.scene.layout.StackPane;
def controller = new MainWindowController()
def loader = new FXMLLoader(getClass().getResource("gui.fxml"));
def myPane = loader.load();
start
{
stage(title: "Tasks!", x: 100, y: 100, width: 400, height: 400, visible: true,
style: "decorated", onHidden: { println "Close"})
{
scene(fill: GROOVYBLUE)
{
vbox(spacing: 10, padding: 10)
{
button(text:"Show!",onAction:{ controller.activityPanel.getChildren().clear() controller.activityPanel.getChildren().add(myPane)})
controller.activityPanel=stackPane()
}
}
}
}
ユーザーがボタンを押すと、メイン ウィンドウ内にある stackPane が myPane の内容を受け取り、この「ビュー」が表示されます。質問は
- このビュー「myPane」をコードで定義するにはどうすればよいですか? fxml ソリューションしか見つかりませんでした。
- fxml が唯一の方法である場合、GroovyFX を使用してコントローラー クラスをインスタンス化し、そのメンバーをバインドする方法についてのサンプル コードを知っていますか?
この考え方は jfx-flow プロジェクトに似ていますが、GroovyFX にあります。