1

レイアウトは最初は問題ないように見えますが、ウィンドウのサイズを変更すると、テキスト領域のサイズが適切に変更されません。

それを修正する方法はありますか?

ありがとう!

import java.awt.BorderLayout
import javax.swing.BorderFactory
import java.awt.GridLayout
import groovy.swing.SwingBuilder

swing = new SwingBuilder()
frame = swing.frame(title:'Test', location:[200,200], size:[300,216]) {
    panel(layout: new BorderLayout()){
        scrollPane(constraints: BorderLayout.NORTH){
            table {
                def people = [
                             ['name':'Johan', 'location':'Olso'],
                             ['name':'John', 'location':'London'], 
                             ['name':'Jose', 'location':'Madrid'], 
                             ['name':'Jos', 'location':'Amsterdam']
                            ]

                tableModel( id:'model', list: people) { m ->
                    propertyColumn(header: 'Name', propertyName: 'name')
                    propertyColumn(header: 'Location', propertyName: 'location')
                }
            }
        }
    }

    panel(constraints: BorderLayout.SOUTH){
        scrollPane(constraints: BorderLayout.CENTER){
            textArea(id:'TextArea', lineWrap:true,wrapStyleWord:true, columns:35, rows:4,editable:true)
        }  
    }             
}
frame.show()

最初はOK

リサイズ前

サイズ変更後 不可

ここに画像の説明を入力

4

1 に答える 1

3

問題の主な原因は、のデフォルトのレイアウトマネージャJPanelFlowLayoutではなくであり、そのために制約をBorderLayout使用していることです。BorderLayout

panel(constraints: BorderLayout.CENTER, layout: new BorderLayout()) {
    scrollPane(constraints: BorderLayout.CENTER){
        textArea(id:'TextArea', lineWrap:true,wrapStyleWord:true, columns:35, rows:4,editable:true)
    }  
}

テキスト フィールドとそれを含むパネルを使用可能なすべてのスペースに拡張します。(変更は、パネルの CENTER 位置を使用し、レイアウト マネージャーを設定することです)。

また、テーブルを北の位置に配置しました (下のパネルを中央に移動したため)。

panel(constraints: BorderLayout.NORTH, layout: new BorderLayout()) {
...

あなたは別のことをしたいかもしれませんが、選択はあなたの正確な好みに依存するので、あなたにとって何が正しいのかわかりません.

また、使用する必要があります

frame.pack()
frame.show()

フレームサイズを明示的に設定する代わりに。これにより、フレーム サイズが、含まれるコンポーネントの推奨サイズに適合します。

于 2013-10-05T13:50:22.007 に答える