Все,
У меня есть представление типа формы, которое я создаю в 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()]);
}
});
В двух словах, я хотел бы, чтобы пользовательский интерфейс динамически увеличивался при выборе варианта, который требует больше места, и сокращался, когда ему требовалось меньше места, как в пользовательском интерфейсе смарт-списка iTunes:
(Я понимаю, что это немного другая проблема, но она иллюстрирует то, что я хочу - эта панель, содержащая поля ограничений, растет в зависимости от количества строк. Iнужно, чтобы мой макет увеличивался в зависимости от количества опций, основанных на выборе в выпадающем списке)