두 개의 JLabel이 포함 된 JPanel이 있습니다. 이 패널은 BorderLayout을 사용합니다. 이 두 레이블을 표시하기에 충분한 수직 공간이되지 않도록 내가 패널의 크기를 조정하면BorderLayout - "중앙"구성 요소가 "잘린"것을 방지합니다.
하나의 JLabel이 BorderLayout.PAGE_END
에, BorderLayout.CENTER
위치로 다른 사람을 넣어의 중심 라벨로 (차단) 항상 겹쳐 PAGE_END
위치의 레이블.
가운데 라벨에 표시되는 정보가 다른 라벨보다 중요하므로 가운데 맞춤 라벨 아래에 라벨을 중첩 (또는 잘림)하고 싶습니다.
BorderLayout (및 GridBagLayout)은 항상 "위에서 아래로"구성 요소를 칠하고 "나중에"그려진 요소는 이전에 그렸던 요소를 덮어 씁니다.
BorderLayout (또는 다른 LayoutManager)에서 특정 구성 요소가 항상 "맨 위에"있다고 가정 할 수있는 방법이 있습니까?
나는panel.setComponentZOrder(label1, 1);
panel.setComponentZOrder(label2, 0);
를 사용하여 시도하지만 그 차이를 만들지 않았다.
링크 덕분에 재미있는 해킹 +1 – mKorbel
링크를 제공해 주셔서 감사합니다. 내 자신의 LayoutManager에 대해서도 생각하고 있었지만 그 길을 가고 싶지 않았습니다. 실제로 PreferredSizeGridLayout이 도움이 될지 확신 할 수 없으므로 * 두 번째 레이블이 기본 크기보다 * 우량하지 않아야합니다. 하지만 어쩌면 나는 "메인"레이블의 선호 크기를 존중하는 것만 큼 함께 사용할 수 있습니다. –
위 테스트 코드를 추가했습니다. 설계의 한 가지 매력적인 측면은'BoundableInterface'에 의해 제공되는 암시적인 전략 패턴입니다. 주식 레이아웃 관리자를 사용하는 솔루션에 대해이 기능을 잠시 동안 열어 둘 수 있습니다. – trashgod