我有一個表單類型視圖我正在用Java創建。基於組合框的內容,我需要切換表單的某些方面。我正在使用cardlayout來做到這一點,並且它工作正常。
問題在於cardlayouts使用所添加的組件的所有首選尺寸的最大值來確定它們自己的首選尺寸。這意味着當我選擇了一個字段較少的選項時,由於切換器組件上的首選佈局大小,會有空白區域。
我試過在每次選擇更改時手動更改cardlayout面板的首選大小,但這沒有任何影響 - 面板總是適合所有組件的最大值。
combo.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
Dimension preferredSize = null;
switch (combo.getSelectedIndex()) {
case 0:
preferredSize = panel0.getPreferredSize();
break;
case 1:
preferredSize = panel1.getPreferredSize();
break;
case 2:
preferredSize = panel2.getPreferredSize();
break;
default:
assert false;
}
patternOptions.setPreferredSize(preferredSize);
c.show(patternOptions, TYPE[combo.getSelectedIndex()]);
}
});
在我想的時候選擇一個選項,需要更多空間的UI動態增長,當它需要更少的空間縮小,就像iTunes的SmartList的UI一言以蔽之:
我知道這是一個稍微不同的問題,但它是說明我想要什麼 - 持有約束字段的面板正在增長,基於行數。我需要我的佈局根據數量增長基於組合框選擇的選項)
回答在http://stackoverflow.com/questions/8277834/how-to-set-a-jframe-size-to-fit-the-cardlayout-displayed-jpanel – aditsu 2013-05-29 13:57:42