布局最初看起来不错,但是当重新调整窗口大小时,文本区域不会正确调整大小。
知道怎么解决吗?
谢谢!
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()
最初确定
重新调整大小后不行
答案 0 :(得分:3)
问题的主要来源是JPanel
的默认布局管理器是FlowLayout
,而不是BorderLayout
,并且您正在使用BorderLayout
约束。< / p>
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位置,并为其设置布局管理器)。
我还把桌子放到了NORTH位置(因为我把下面的面板移到了CENTER):
panel(constraints: BorderLayout.NORTH, layout: new BorderLayout()) {
...
您可能希望不这样做,但由于选择取决于您的确切偏好,我不知道对您来说什么是正确的。
您还应该使用
frame.pack()
frame.show()
而不是显式设置帧大小。这使帧大小适合所包含组件的首选大小。