2012-05-30 24 views
1

我有一个狮鹫视图如何动态地构建一个面板格里芬

MyAppView.groovy

panel(id: 'tabpanelWest', constraints: WEST, border: emptyBorder(6)) { 
     boxLayout(axis: BoxLayout.Y_AXIS) 
     button('Add', actionPerformed: controller.addToggleButton) 
     toggleButton(new JToggleButton('Secretaría',imageIcon('/onbutton.png'), true), itemStateChanged: controller.toggleRly) 
     toggleButton(new JToggleButton('Hall Entrada',imageIcon('/onbutton.png'), true), itemStateChanged: controller.toggleRly) 
} 

在我MyAppController.groovy我的下一个封闭面板:

def toggleRly = { evt -> 
     def toggleButton = evt.source 
     def status = toggleButton.isSelected() ? 1 : 0 
     // Calls to a service which does some stuff 
     URL url = status ? app.getResourceAsURL('onbutton.png') : app.getResourceAsURL('offbutton.png')   
     toggleButton.setIcon(new ImageIcon(url)) 
     toggleButton.setSelected(status ? true : false)  
    } 

    def addToggleButton = { evt -> 
     execInsideUIAsync { 
     URL url = app.getResourceAsURL('onbutton.png') 
     def panel = view.tabpanelWest 
     def jtogglebutton = new JToggleButton('Secretaría',new ImageIcon(url), true) 
     panel.add(jtogglebutton) 
     panel.revalidate() 
     } 
} 

当用户提交将要成为UI一部分的表单时,我想动态地将切换按钮添加到我的面板。在上面的例子中,我使用了一个简单的按钮。

addToogleButton关闭增添了JToggleButton中但我不知道我怎么可以附加一个监听器,如视图的一个“itemStateChanged:controller.toggleRly)”,这样,当它被点击我的控制器关闭toggleRly被调用。

我与

panel.add(new SwingBuilder().edt {toggleButton(jtogglebutton, itemStateChanged: view.controller.toggleRly)}) 

回答

1

不成功尝试可以使用SwingBuilder DSL为components直接(JToggleButton

试试这个:

def addToggleButton = { evt -> 
     edt { 
     def panel = view.tabpanelWest 
     def jtogglebutton = toggleButton(text:'Secretaria', selected:true, itemStateChanged: toggleRly) 
     panel.add(jtogglebutton) 
     panel.revalidate() 
     } 
}