2013-10-05 104 views
1

初始佈局看起來不錯,但是當窗口重新調整大小時,文本區域沒有適當地重新調整大小。如何在Groovy中將textarea寬度設置爲父級

任何想法如何解決它?

謝謝!

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() 

最初確定

Before re-size

重新大小NOT OK

enter image description here

+1

不是一個常規用戶,但看起來像您指定文本區域的首選列數。它只是服從這種偏好。你可以做的另一件事是將包含的面板放到CENTER,而不是SOUTH。 – kiheru

+0

感謝您的建議,但它不工作:( – user955732

回答

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位置,併爲其設置佈局管理器)。

我也放在桌上,北位置(因爲我感動下面板爲CENTER):

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

您可能希望不這樣做,但作爲的choise取決於你確切的喜好我不你知道什麼是正確的。

您還應該使用

frame.pack() 
frame.show() 

,而不是明確設置幀的大小。這適合框架大小與所包含組件的首選大小。

+0

感謝kiheru,它的工作很棒!我還添加了這個't.setPreferredScrollableViewportSize(t.getPreferredSize()); t.setFillsViewportHeight(true);'就在'frame .pack()'以更好地將桌子放到框架上。 – user955732

+1

不客氣:-)如果它解決了問題,請接受答案。 – kiheru

相關問題