Я пытаюсь отображать карты в моем графическом интерфейсе, и я хочу накладывать карты, чтобы сэкономить на пространстве. Однако я не могу заставить его работать. В настоящее время я использую MigLayout, хотя кажется, что это скорее проблема JLabel, чем что-то еще.Показать JLabel частично поверх другого JLabel
Чтобы описать это на высоком уровне, подумайте о том, чтобы играть в карточную игру в реальной жизни. Когда вы обычно держите карты в руке, вам нужно только увидеть часть карты, поэтому большая часть карты перекрывается другой картой и так далее, пока окончательная карта не будет полностью отображена, так как на ней ничего не будет. Я хочу накладываться таким образом, чтобы отображалась только часть карт внизу, а затем верхняя карта полностью отображается.
Текущая проблема заключается в том, что когда я добавляю JLabel в JPanel, он помещает новейшую метку за то, что уже есть. Я хочу, чтобы он был впереди того, что уже существует. Я не могу найти какой-либо метод, который позволяет мне установить, какая метка находится впереди.
Я хочу сделать что-то вроде:
Пут CARD1 в ячейке 0 0 Put Card2 в ячейке 0 0 с транспонированной у позиции Любая область, где обе карты перекрыт имеет Card2 сверху
Простое добавление он ставит его позади, что говорит о первостепенном приоритете приоритета при отображении компонента. Я бы предпочел бы иметь приоритет с первым призом. И, как я уже сказал, мне не повезло найти способ, который разрешает любое из этого.
Если это неясно, сообщите мне. Заранее спасибо.
Для этого может потребоваться установить собственный менеджер компоновки. Вы могли бы вырезать его с некоторой работой с GridBagLayout, но я бы предположил, что вам нужно локализовать для любого из существующих менеджеров макетов, чтобы иметь возможность хорошо его поддерживать. – MadProgrammer
Ну, я не вернусь к GridBagLayout, у меня были плохие впечатления от это и я считаю, что это один из самых ужасных менеджеров макетов. У меня было так много проблем с этим, что они были исправлены, просто переделав его в другом менеджере макетов. Я хотел бы продолжать использовать существующий менеджер макета, если это возможно. –
'Я бы хотел, если возможно, использовать существующий менеджер макетов'. Нет, это невозможно. Менеджеры макетов, которые поставляются вместе с JDK, выкладывают компоненты в 2D без перекрытия. В JDK есть один макет, называемый OverlayLayout, но я никогда не мог заставить его работать каким-либо образом, что имеет смысл. – camickr