我想将MVVM WPF应用程序改编为GroovyFX。我在Groovy和GroovyFX本身没有太多经验,而且没有太多可用的信息。
设计包括一个主窗口,里面有一个面板。例如,当用户按下按钮时,app会删除中心面板子节点并插入符合目标视图的新“节点树”。
让我们看一些代码
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的内容,并显示该“视图”。 问题是
这个想法类似于jfx-flow项目,但在GroovyFX中。
答案 0 :(得分:1)
对于#2你可以做......
fxml resource("/FXMLDemoInline.fxml"), {
buttonCSSID.onAction {
labelCSSID.text = "Clicked - CSS";
}
buttonFXID.onAction {
labelFXID.text = "Clicked - FXML";
}
}
对于#1,您可以在GroovyFX构建器中使用build(Script)
实例方法。只需编写脚本,就像使用GroovyFX的start方法一样,并引用脚本类。