griffon:将splitPane添加到我的应用程序中

时间:2013-01-31 22:27:33

标签: griffon

我需要将splitPane textArea添加到我的Griffon应用程序中。 我似乎无法找到正确的语法和方法的例子。

任何人都可以帮帮我吗?

到目前为止,我的观点是:

=============================================== ==================================

package test1

import griffon.util.GriffonNameUtils as GNU
import java.beans.PropertyChangeListener

application(title: 'Test1',
  //preferredSize: [600, 300],
  pack: true,
  locationByPlatform: true,
  iconImage:   imageIcon('/griffon-icon-48x48.png').image,
  iconImages: [imageIcon('/griffon-icon-48x48.png').image,
               imageIcon('/griffon-icon-32x32.png').image,
               imageIcon('/griffon-icon-16x16.png').image]) {                  

    borderLayout()
    panel(constraints: WEST,
          border: titledBorder(title: 'Platform')) {
        migLayout()
        buttonGroup(id: 'platform')
        def radioButtonConverter = { String title, v -> v ? title : model.deviceType }
        for (data in model.deviceTypes) {
            radioButton(data.title, buttonGroup: platform, constraints: 'wrap',
                selected: bind('deviceType', target: model,
                          converter: radioButtonConverter.curry(data.title), value: data.selected))
        }
    }

    panel(constraints: EAST,
          border: titledBorder(title: 'Path Browser')) {
        migLayout()
        controller.griffonClass.actionNames.each { name ->
            button(getVariable(name + 'Action'),
                constraints: 'growx, wrap')
        }
    }

    panel(constraints: CENTER, id: 'devicePanel',
          border: titledBorder(id: 'devicePanelBorder', title: 'No Devices')) {
        noparent {
            model.addPropertyChangeListener('deviceType', { e ->
                model.deviceTypes.each{ d-> d.selected = false }
                model.deviceTypes.find{ d -> d.title == e.newValue }.selected = true
                devicePanelBorder.title = e.newValue
                devicePanel.layout.show(devicePanel, e.newValue)
                devicePanel.repaint() // force redraw
            } as PropertyChangeListener)
        }
        cardLayout()
        for(data in model.deviceTypes) {
            // we set the title as the page's constraints -> simplifies bookkeeping
            // in the PropertyChangeListener registered above
            panel(constraints: data.title) {
                gridLayout(cols: 2, rows: (data.devices.size()/2))
                data.devices.each { device ->
                    checkBox(device.name, selected: bind(value: device.selected, target: device, 'selected'))
                }
            }
        }
    }

    panel(constraints: SOUTH) {
        riverLayout()
        buttonGroup(id: 'execute', constraints: 'center')
        button('Build XML', buttonGroup: execute)
        button('Run', buttonGroup: execute)
        button('Exit', buttonGroup: execute)
    }

    panel(constraints: NORTH) {
        riverLayout()
        label('TWC Companion Device Test Tool', constraints: 'center')
    }
}

=============================================== =============================================

谢谢!

ironmantis7x

1 个答案:

答案 0 :(得分:1)

如SwingPad(https://github.com/griffon/griffon/blob/master/src/dist/samples/SwingPad/griffon-app/views/griffon/samples/swingpad/SwingPadContent.groovy)所示,使用splitPane就像

一样简单
splitPane(resizeWeight: 0.5f) {
     label('Left component')
     label('Right component')
}

查看Griffon指南的View部分以了解有关节点的更多信息

http://griffon.codehaus.org/guide/latest/guide/views.html#specialNodes

以下链接指向可与SwingBuilder一起使用的所有节点

http://groovy.codehaus.org/Swing+Builder

最后,您可以启动SwingPad($ GRIFFON_HOME / samples / SwingPad)并使用实时节点。此应用程序包括所有节点的列表(帮助 - >节点列表)以及非常基本的节点名称完成功能。

相关问题