2

コンポーネント、つまりチェックボックス、ラベル、ボタンをすべて同じ水平線上に含むパネルのリストを表示したいと思います。各パネルは、1 つのアイテムの情報を表示する 1 つのコンポーネント セットを表します。メインパネルの高さに収まるように、スクロールパネル内にパネルのリスト(数は未定)を配置する必要があります。

スクロールパネルとパネルをコンポーネントと混在させるための解決策が見つからないようです。

この結果を取得したい:

スクロールパネル {

  • チェックボックス | アイテム1 | ボタン1 | ボタン1 | ラベル1 | ラベル1
  • チェックボックス | アイテム2 | ボタン2 | ボタン2 | ラベル2 | ラベル2
  • チェックボックス | アイテム3 | ボタン3 | ボタン3 | ラベル3 | ラベル3

    [ ... ]

}

私が現在ここに示しているものの実用的な例があります: Groovy SwingBuilder: パネルの色を変更するボタン

そこには 6 つの項目があり、それぞれに関連するコンポーネントがあります。ここで、6 個ではなく 60 個のアイテムを表示したい場合、フレームはアイテムに合わせて拡大されますが、画面サイズを超えてしまいます。

Javaチュートリアルのすべての例と関連する質問をここで確認しましたが、そのような「スクロールパネル」が機能することは明らかですが、動作させることはできません。

ティア。ミシェル

4

1 に答える 1

3

パネルを の中に入れてvbox、それを の中に入れることができますscrollPane

前の質問のコードを取得すると、次のようになります。

import groovy.swing.SwingBuilder
import javax.swing.WindowConstants as WC
import javax.swing.JOptionPane
import javax.swing.JScrollPane
import javax.swing.BoxLayout as BXL

int numPanels = 20

swing = new SwingBuilder()
frame = swing.frame(title:'test', pack:true, visible:true, defaultCloseOperation:WC.HIDE_ON_CLOSE) {
  panel(id:'mainPanel'){
    scrollPane( verticalScrollBarPolicy:JScrollPane.VERTICAL_SCROLLBAR_ALWAYS ) {
      vbox {
        (1..numPanels).each { num ->
          def panelID = "panel$num"
          def pane = panel( alignmentX:0f, id:panelID, background:java.awt.Color.GREEN ) {
            label('description') 
            textField( id: "description$num", text:panelID, columns: 70 )
            button( id: "buttonpanel$num", text:panelID, actionPerformed:{
              swing."$panelID".background = java.awt.Color.RED
            } )
          }
        }
      }
    }

    boxLayout(axis: BXL.Y_AXIS)
    panel(id:'secondPanel' , alignmentX: 0f){                       
      button('Quit', actionPerformed:{
        frame.visible = false
      })
    }
  }       
}
frame.size = [ frame.width, 600 ]
于 2011-06-22T20:33:27.447 に答える