2012-06-27 3 views
1

Я хочу добавить во время выполнения JLabel под фиолетовой панелью, которая содержит уже некоторые компоненты, скажем, под индикатором прогресса: enter image description hereНевозможно добавить компонента к JPanel в свинге

Вот структура элементов:

enter image description here

И это мой код, который выдается при возникновении события (это получение там я проверил с отладкой):

jPanel1.add(new JLabel("Stack Overflow")); 
    jPanel1.revalidate(); 
    jPanel3.revalidate(); 

Я не вижу никаких изменений и не имею понятия, куда идти отсюда. Когда я положил текстовую область в фиолетовое поле и затем вызываю ее метод setText() в том же месте, я пытаюсь добавить компонент JLabel, который он работает.

+1

Какой менеджер макета вы используете? Возможно, что новый компонент попадает под другие. –

+0

@PaulTomblin я изменил макет на макет границы, и теперь я вижу его за другим лейблом! – Tom

+0

Я подожду ответа, который предположил бы, какой макет выбрать – Tom

ответ

3

Вам нужно больше узнать о схемах и как они работают. Я настоятельно рекомендую вам прочитать весь руководство по планированию макетов, поскольку понимание макетов - это решение здесь, и просто использование BorderLayout - это не способ его решить. Скорее всего, вы захотите вложить макеты, возможно, используя BorderLayout для общего графического интерфейса, и имея центральный JPanel, используйте BoxLayout, чтобы вы могли складывать компоненты поверх друг друга внутри него. Затем, возможно, добавьте этот JPanel к основному JPanel, который использует BorderLayout в позиции BorderLayout.CENTER.

+0

Я сделаю чтение. спасибо – Tom

+0

эта цифра говорит мне о OverlayLayout +1 – mKorbel

0

Просто догадка, но, возможно, вам нужно вызвать перерисовку() в дополнение к перепроверить()

Java Swing revalidate() vs repaint()

+0

его следует называть автоматически innit? – Tom

+0

Да, это нужно, но только для регионов, которые менеджер по планированию «думает» грязный. – anttix

+0

попробовал это без везения (на обоих) – Tom

Смежные вопросы