2017-02-02 6 views
-2

У меня есть JPanel, и после того, как я нажму кнопку, я хочу, чтобы значки отображались вертикально один сверху и после другого щелчка второй значок внизу и так далее.Как разместить значок сверху и снизу JPanel

Таким образом, с каждым щелчком положение значка чередуется между верхней и нижней.

Я пробовал многие из менеджеров макета, но не могу заставить его работать так, как я этого хочу.

РЕДАКТИРОВАТЬ: Пример,

После первого щелчка;

After first click

Второй щелчок,

Second click

Третий щелчок, другой значок на верхней стороне, и так далее. Целью этого является добавление к шахматной игре, которую я создаю. Поэтому я хочу, чтобы мертвые части появлялись на соответствующей стороне игрока (черный или белый). Черные кусочки идут вверх, а белые фигуры идут на дно JPanel. надеюсь, это очистит его. Благодарю.

+1

У меня трудное время визуализировать именно то, что вы пытаетесь сделать здесь. Чтобы поменять значки, просто вызовите 'setIcon (...)' в JLabel. Чтобы разместить JLabels сверху и снизу, используйте BorderLayout, но опять же, я понятия не имею, действительно ли это то, что вы ищете. Просьба уточнить вашу проблему для нас. –

+0

@HovercraftFullOfEels Я добавил несколько изображений в качестве примера. Идея заключается в том, что после каждого нажатия кнопки появляется значок. положение места появления значка должно чередоваться между верхней частью JPanel и нижней частью JPanel. Цель этого - добавить к шахматной игре, которую я создаю, чтобы я хотел, чтобы мертвые части появлялись на соответствующей стороне игрока (черный или белый). Черные кусочки идут вверх, а белые фигуры идут на дно JPanel. надеюсь, это очистит его. Благодарю. – Ma7ot

ответ

2

Черные кусочки идут сверху и белые части идут на дно JPanel.

Я предлагаю вам использовать гнезда панелей вместо использования одной панели. Вы можете использовать вертикальный BoxLayout для этого:

Затем вы добавляете этикетки на соответствующую панель, если требуется. Например:

deadWhitePieces.add(new JLabel(...)); 
deadWhitePieces.revalidate(); 
deadWhitePieces.repaint(); 
+0

(1+) у вас было лучшее понимание проблемы, чем я. Touche. –

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