Swing 如何使用Griffon动态构建面板
我有一个griffon视图中的面板 MyAppView.groovySwing 如何使用Griffon动态构建面板,swing,panel,griffon,Swing,Panel,Griffon,我有一个griffon视图中的面板 MyAppView.groovy panel(id: 'tabpanelWest', constraints: WEST, border: emptyBorder(6)) { boxLayout(axis: BoxLayout.Y_AXIS) button('Add', actionPerformed: controller.addToggleButton) toggleButton(new JToggleBut
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.Togglery”中的一个,以便在单击它时调用我的控制器闭包Togglery
我试过了,但没有成功
panel.add(new SwingBuilder().edt {toggleButton(jtogglebutton, itemStateChanged: view.controller.toggleRly)})
您可以直接将SwingBuilder DSL用于() 试试这个:
def addToggleButton = { evt ->
edt {
def panel = view.tabpanelWest
def jtogglebutton = toggleButton(text:'Secretaria', selected:true, itemStateChanged: toggleRly)
panel.add(jtogglebutton)
panel.revalidate()
}
}
您可以直接将SwingBuilder DSL用于() 试试这个:
def addToggleButton = { evt ->
edt {
def panel = view.tabpanelWest
def jtogglebutton = toggleButton(text:'Secretaria', selected:true, itemStateChanged: toggleRly)
panel.add(jtogglebutton)
panel.revalidate()
}
}