0

グリフォンアプリにsplitPanetextAreaを追加する必要があります。適切な構文とこれを行う方法の例が見つからないようです。

誰か助けてもらえますか?

これまでの私の見解は次のとおりです。

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

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

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

ノードの詳細については、グリフォン ガイドのビュー セクションをご覧ください。

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 に答える