全部,
我有一个用 Java 创建的表单类型视图。根据组合框的内容,我需要切换表单的某些方面。我正在使用卡片布局来执行此操作,并且效果很好。
问题是卡片布局使用添加到它们的组件的所有首选尺寸中的最大值来确定它们自己的首选尺寸。这意味着当我选择具有较少字段的选项时,由于切换器组件上卡片布局的首选大小,会出现空白。
每次选择更改时,我都尝试手动更改卡片布局面板的首选大小,但这没有效果 - 面板始终是适合所有组件的最大值。
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 智能列表 UI 一样:
(我意识到这是一个稍微不同的问题,但它说明了我想要什么 - 包含约束字段的面板根据行数增长。我需要我的布局根据选项数量增长,基于组合框选择)