我是JavaFX和GroovyFX的新手。
我只是在JavaFX上构建我的第一个表单,一旦我开始工作,我将它移植到GroovyFX,因为我在Groovy / Grails开发团队。
我想知道如何模块化页面布局,即如何在GroovyFX.start()
方法下提取节点定义。
假设我有以下简单的布局:
start{
stage(title: 'GroovyFX Hello World', visible: true){
scene(width: 300, height: 100){
borderPane{
center(align: CENTER){
text "this is the center region"
}
}
}
}
}
我可以在start方法下将代码提取到闭包中:
start{
def renderCenter = {
text "this is the center region defined in a closure"
}
stage(title: 'GroovyFX Hello World', visible: true){
scene(width: 300, height: 100){
borderPane{
center(align: CENTER){
renderCenter()
}
}
}
}
}
但我想要的是:
class CenterRegion {
def render(){
text "this is the center region in a separate class"
// and other stuff
}
}
start{
stage(title: 'GroovyFX Hello World', visible: true){
scene(width: 300, height: 100){
borderPane{
center(align: CENTER){
CenterRegion.render()
}
}
}
}
}
如何使用GroovyFX完成此操作?
由于
答案 0 :(得分:2)
import groovyx.javafx.SceneGraphBuilder
import static groovyx.javafx.GroovyFX.start
class CenterRegion {
static def render(SceneGraphBuilder builder){
builder.text "some centered text"
}
}
start {
// get the ScenGraphBuilder by getting closure's delegate
def sgb = getDelegate()
stage(title: 'GroovyFX Hello World', visible: true){
scene(width: 300, height: 100){
vbox {
borderPane{
center(align: CENTER){
CenterRegion.render(sgb)
}
}
}
}
}
}