2015-11-04 3 views
0

Я довольно новичок в JavaFX и GroovyFX.В 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{ 

    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?

Благодаря

ответ

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) 
        } 
       } 
      } 
     } 
    } 
} 
+0

Он работал, спасибо. – alexramos

 Смежные вопросы

  • Нет связанных вопросов^_^