我使用GroupLayout
來管理某些動態生成的數據輸入表單中的組件。佈局或多或少像這樣:Swing GroupLayout:調整大小並限制組件大小
*-----------------------------------------------*
| label A | field A |
| label B | field B |
| label C | field C |
*-----------------------------------------------*
我使用用於水平佈局2個平行組,以及用於垂直佈局的單個順序組。大多數情況下,一切都很好。
我想將標籤的最大寬度(僅爲JLabel
的實例)限制爲父項的寬度的三分之一JFrame
。如果JFrame
是固定大小,這將是微不足道的,但我必須處理它被調整大小。
我從JFrame
中挑選ComponentListener.componentResized()
事件,但是我一旦遇到這樣的事件,我有點被困在做什麼。
我試過這個方法沒有任何的運氣:
public void componentResized(ComponentEvent e) {
int maxW = parentFrame.getWidth()/3;
for (JLabel l : labels) {
l.setMaximumSize(// have also tried setSize() and setPreferredSize()
new Dimension(
Math.min(l.getSize().width, maxW),
l.getMaximumSize().height));
}
groupLayout.invalidateLayout(getContentSpace());
}
任何人都可以提出一個方法來限制將工作標籤的寬度是多少?
我可能每次都可以從頭重新構建佈局,但我覺得應該有一個更簡單的方法。
永遠不要setXXSize:http://stackoverflow.com/questions/7229226/should-i-avoid-the-use-of-setpreferredmaximumminimumsize-methods-in-java-swi – kleopatra
標籤的尺寸是否大於最大標籤的首選尺寸? – trashgod
@trashgod不,沒有。我想設置標籤寬度的上限,而不是最小限制。編輯了這個問題,使其更清晰。 – vaughandroid