【问题标题】:How to build a panel dynamically with Griffon如何使用 Griffon 动态构建面板
【发布时间】:2012-05-30 11:47:28
【问题描述】:

我在 griffon 视图中有一个面板

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

【问题讨论】:

    标签: swing panel griffon


    【解决方案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()
          }
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 2017-04-11
      相关资源
      最近更新 更多