Поместите JLabel поверх другой JLabel, как в пасьянсе

1

Изображение 174551

Я должен сделать пасьянс, используя форму Java и JFrame. Мне уже удалось добавить изображение карты туза в JLabel и изменить его при нажатии. Теперь мне нужно сделать одну карту поверх другой, похожей на изображение выше. Я предполагаю, что смогу сделать это, создав несколько ярлыков и разместив их поверх друг друга. То, что я не знаю, как это сделать, поскольку каждый раз, когда я создаю ярлык, который он помещает дальше, сверху или снизу карты.

Теги:
swing
jframe
jlabel

2 ответа

1

Большинство менеджеров макетов 2-мерные. Чтобы отображать компоненты друг над другом, вам нужно начать играть с ZOrder.

Ознакомьтесь с макетом Overlap, который был разработан специально для этого типа макета.

0

Одно из возможных решений:

  • Создайте BoxLayout с вертикальной ориентацией. (BoxLayout.Y_AXIS) и установите этот макет для JPanel. Это будет представлять карты.
  • Прежде чем добавить JLabel в панель с помощью BoxLayout, создайте пустую границу с отрицательной верхней вставкой. Например: label.setBorder(new EmptyBorder(-30, 0, 0, 0)); Это приведет к тому, что ярлык (карта) сверху накладывается на нижнюю карту на эту величину. Вы можете поиграть с -30 пока не найдете нужный размер.

Другое возможное решение:

  • Используйте JLayeredPane, где уровень уровня каждой карты будет в порядке убывания.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню