2013-09-13 6 views
0

Я устанавливаю макет панели, которая наследует JPanel, используя Mig Layout, но ограничения ячейки не работают, как я ожидал для одного из компонентов, которые я пытаюсь добавить. Я хочу, чтобы компоненты находились друг над другом, один столбец и три строки. Третий компонент находится рядом со вторым, а не в следующей строке. Что я делаю не так?Mig Макет не соответствует ограничениям ячейки

roundedPanel = new RoundedPanel();  //inherits from JPanel 
registerPanel = createRegisterPanel(); //returns a JPanel 
lblIcon = new JLabel(); 

setupLicenseInfoLabel(); //sets text of and initializes registerLabel 

roundedPanel.setLayout(new MigLayout("fill, insets " + RoundedPanel.RECOMMENDED_INSET, "[]", "[][][]")); 

roundedPanel.add(lblIcon, "cell 0 0"); 
roundedPanel.add(licenseInfoLabel, "cell 0 1"); 
roundedPanel.add(registerPanel, "cell 0 2"); 

редактировать: Я понял, что я строк и столбцов аргументы MigLayout перепутали, но даже когда я попробовал это, я все еще была та же проблема.

roundedPanel.setLayout(new MigLayout("fill, insets " + RoundedPanel.RECOMMENDED_INSET, "[][][]", "[]")); 

редактировать 2: Я добавил к лёгкому струящимся ограничениям MigLayout, и вещи все отображается, как я предполагал. Я не уверен, в чем была оригинальная проблема, и почему обертка не помогла.

+0

поток не должен иметь никакого эффекта, возможно, что-то неправильно в другом месте - пожалуйста, покажите SSCCE, который демонстрирует проблему. – kleopatra

ответ

1

Число ограничений по столбцу/строке не имеет значения (последнее ограничение используется до тех пор, пока существуют компоненты), вы должны явно добавить перенос где-либо: либо в ограничение макета, либо в каждое ограничение ячейки:

new MigLayout("wrap 1", ...) 
// or 
panel.add(someComponent, "wrap, ...") 

Update

альтернатива (хотя необычно) подход, чтобы обернуть как-то/где разместить компоненты в сетке, как вы делали (пропустил что-то, извините). Он должен работать (и делает в приведенном ниже фрагменте кода), не требуя ничего другого, компоненты расположены друг под другом в первом столбце:

MigLayout layout = new MigLayout(); 
JComponent content = new JPanel(layout); 
content.add(new JTextField("first", 20), "cell 0 0"); 
content.add(new JTextField("second", 10), "cell 0 1"); 
content.add(new JTextField("third", 13), "cell 0 2"); 

С другой стороны, установка лёгкой струящейся свойства макета не должны иметь любой эффект: координаты ячейки всегда (x, y), независимо от потока. Поэтому я подозреваю, что в вашем контексте что-то происходит не так, лучше всего отследить его, чтобы он не ударил вас в будущем.

+0

Я пробовал оба этих подхода (как отдельно, так и вместе), но не решил мою проблему. –