Java - установите точную позицию JComponent

Мне нужна помощь в настройке положения JLabel по осям x и y на панели JPanel, а не не на север, юг, запад, восток.

Спасибо за уделенное время.


person Ewen    schedule 10.08.2012    source источник
comment
Зачем? это исключительная ответственность LayoutManager, никогда не беритесь за это вручную   -  person kleopatra    schedule 10.08.2012


Ответы (1)


Чтобы JPanel учитывал точное местоположение, вы должны установить для его макета значение null. Затем вы можете использовать setLocation для любого JComponent, чтобы установить его местоположение в этой JPanel.

JPanel panel = new JPanel();
panel.setLayout(null);
JLabel label = new JLabel("text");
label.setLocation(50, 20);
panel.add(label);

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

person FThompson    schedule 10.08.2012
comment
технически правильно, но нет-нет-никогда (по модулю нечетных угловых случаев) в Swing - вместо этого используйте LayoutManager - person kleopatra; 10.08.2012
comment
Хотя вы никогда не упоминали о недостатках использования Абсолютного позиционирования в ОП, еще одна большая ошибка, которую вы допустили в своем фрагменте кода, заключается в том, что вы не используете setSize(...) для многих JComponents. расположение настроек само по себе мало поможет, вы также должны установить размер для указанного JComponent - person nIcE cOw; 10.08.2012
comment
Правильно (+1), но, как указала клеопатра в комментарии к вопросу, этого не следует делать с самого начала. Я ответил на вопрос, который был задан, но я добавлю это важное замечание. - person FThompson; 10.08.2012