Я создаю новый ярлык, который хочу разместить ровно на 130 пикселей рядом с существующим. Я не знаком с макетами и предпочитаю абсолютно позиционировать свои ярлыки. Мой код выглядит следующим образом:

 playerLabels[index] = new javax.swing.JLabel();
 playerLabels[index].setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/image001".png")));
 playerLabels[index].setBounds(playerLabels[index - 1].getX() + 130, playerLabels[index - 1].getY(), playerLabels[index - 1].getWidth(), playerLabels[index - 1].getHeight());

 panel.add(playerLabels[index]);
 playerLabels[index].setVisible(true);

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

Кто-нибудь знает, что я могу сделать?

0
Lampros Tzanetos 19 Сен 2018 в 19:03

2 ответа

Лучший ответ

Я согласен с тем, что обычно лучше использовать LayoutManager. Тем не менее, вот статья, опубликованная Oracle, в которой описывается, как это сделать: Работа без диспетчера макета (абсолютное позиционирование)

-1
Mat Morton 19 Сен 2018 в 21:22

Код, который вы опубликовали, не отражает проблему. Приведите образец кода, который может воспроизвести вашу проблему.

Чтобы решить вашу проблему, если вы установите положение элемента вручную (setBounds), вам нужно сначала установить нулевой макет контейнера, а во-вторых, вам нужно установить размер панели, на которую вы добавляете эти jlabel.

1 .

this.setLayout(null);

2 .

panel.setSize(900,900); // whatever the size you need.

-2
Shahid 19 Сен 2018 в 16:39