我对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完成这一任务?
谢谢
发布于 2015-11-04 19:38:54
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)
}
}
}
}
}
}https://stackoverflow.com/questions/33528965
复制相似问题