2013-03-27 2 views
3

GUI로 카드를 표시하려고하는데 공간을 절약하기 위해 카드를 겹치기를 원합니다. 그러나, 나는 그것이 작동하도록 할 수 없습니다. 나는 현재 MigLayout을 사용하고 있지만, 뭔가 다른 것보다 JLabel 문제가 더 많은 것처럼 느껴진다.부분적으로 다른 JLabel 위에 JLabel을 표시하십시오.

높은 수준에서 설명하려면 실생활에서 카드 게임을 고려하십시오. 손에 정상적으로 카드를 쥐고 있으면 카드의 일부만보아야하기 때문에 다른 카드로 카드의 상당 부분이 겹쳐지며 그 위에 아무 것도 없기 때문에 마지막 카드가 완전히 표시 될 때까지 계속됩니다. 나는 그 밑에있는 카드의 일부만 보여지고 그 다음에는 맨 위의 카드가 완전히 보이도록 겹치기를 원합니다.

현재 문제는 JPanel에 JLabel을 추가 할 때 이미있는 레이블 뒤에 최신 레이블을 넣는 것입니다. 나는 이미 그곳에 있기를 원합니다. 어떤 레이블이 앞에 있는지 설정할 수있는 방법을 찾지 못하는 것 같습니다. 전치 y 위치 와 세포 0 0 셀에 두 카드가

위에

에 카드 2는 간단하게 추가가 중복 모든 영역을 0 0 넣어 카드 2를

넣어 card1 :

내가 좋아하는 뭔가를하고 싶어 그것은 그것을 뒤집어 놓았습니다. 이것은 구성 요소의 디스플레이에 선착순 우선 순위를 제안합니다. 차라리 최우선 순위를 지을 것입니다. 그리고 제가 말했듯이, 저는이 모든 것을 허용하는 방법을 찾기 위해 노력하지 않았습니다.

이 부분이 분명하지 않으면 알려 주시기 바랍니다. 미리 감사드립니다.

+0

자신의 레이아웃 관리자를 설정해야 할 수도 있습니다. GridBagLayout을 사용하여 일부 작업을 할 수 있지만 기존의 레이아웃 관리자가이를 지원할 수 있도록 현지화해야한다고 제안합니다. – MadProgrammer

+0

글쎄, GridBagLayout으로 돌아 가지 않을 것입니다. 그것과 나는 그것이 가장 끔찍한 레이아웃 관리자 중 하나라는 것을 알았습니다. 나는 다른 레이아웃 매니저에서 그것을 재실행함으로써 간단하게 수정 된 많은 문제들을 가지고있었습니다. 가능한 경우 기존 레이아웃 관리자를 계속 사용하고 싶습니다. –

+0

'가능한 경우 기존 레이아웃 관리자를 계속 사용하고 싶습니다.' 불가능하지 않습니다. JDK와 함께 제공되는 레이아웃 관리자는 겹침없이 2D로 구성 요소를 배치합니다. JDK에는 OverlayLayout이라는 레이아웃이 하나 있지만 결코 의미가없는 방식으로 작동하도록 만들지 못했습니다. – camickr

답변

6

JPanel은 Container에서 상속받은 것으로 보이며, setComponentZOrder() 메서드는 필요한 것처럼 들립니다.

setCompoentZOrder() documentation

+0

ZOrder로 게임을 할 때 +1. – camickr

+0

고마워요, 제가 정확히 필요한 것입니다. 조금 어색하지만 이제는 제대로 작동하기 때문에 모든 것이 잘됩니다. –

5

체크 아웃의 ZOrder가 작동하고 심지어 카드 게임에 도움이되는 레이아웃 매니저를 제공 할 수있는 방법에 대해 좀 더 설명 Overlap Layout.

+0

+1 당신의 자신의 Wordpress에 대한 뻔뻔한 플러그에도 불구하고 자리에되고. –

+0

전에는 알지 못했지만, 그러한 멋진 레이아웃이 그런 작업을 위해 존재한다는 것을 알았습니다 :-) –

관련 문제