У меня есть панель в виде грифона
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()
}
}
Я хочу добавить кнопки динамического переключения на свою панель, когда пользователь отправляет форму, которая станет частью пользовательского интерфейса. В приведенном выше примере я использую простую кнопку.
Замыкание addToogleButton добавляет JTogglebutton, но я не знаю, как подключить прослушиватель, такой как представление "itemStateChanged: controller.toggleRly)", так что при нажатии на нее вызывается toggleRly закрытия моего контроллера.
Я безуспешно пытался с
panel.add(new SwingBuilder().edt {toggleButton(jtogglebutton, itemStateChanged: view.controller.toggleRly)})