Я должен сделать пасьянс, используя форму Java и JFrame
. Мне уже удалось добавить изображение карты туза в JLabel
и изменить его при нажатии. Теперь мне нужно сделать одну карту поверх другой, похожей на изображение выше. Я предполагаю, что смогу сделать это, создав несколько ярлыков и разместив их поверх друг друга. То, что я не знаю, как это сделать, поскольку каждый раз, когда я создаю ярлык, который он помещает дальше, сверху или снизу карты.
Большинство менеджеров макетов 2-мерные. Чтобы отображать компоненты друг над другом, вам нужно начать играть с ZOrder.
Ознакомьтесь с макетом Overlap, который был разработан специально для этого типа макета.
Одно из возможных решений:
BoxLayout
с вертикальной ориентацией. (BoxLayout.Y_AXIS
) и установите этот макет для JPanel
. Это будет представлять карты.JLabel
в панель с помощью BoxLayout
, создайте пустую границу с отрицательной верхней вставкой. Например: label.setBorder(new EmptyBorder(-30, 0, 0, 0));
Это приведет к тому, что ярлык (карта) сверху накладывается на нижнюю карту на эту величину. Вы можете поиграть с -30
пока не найдете нужный размер.Другое возможное решение: