0

我需要在我的 Griffon 应用程序中添加一个 splitPane textArea。我似乎找不到正确语法和方法的示例。

谁能帮我吗??

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

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

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

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

谢谢!!

铁螳螂7x

4

1 回答 1

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 指南的查看部分以了解有关节点的更多信息

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

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

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

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

于 2013-02-01T09:43:19.193 回答