2017-01-30 10 views
-2

일부 디자인의 경우, 2 개의 패널에 Java UI 구성 요소가 있어야합니다. 다만, 모든 JComponent에는 부모가 1 개 밖에없는 것으로 보입니다. 따라서 제 질문은 다음과 같습니다. 구성 요소를 동시에 두 패널 이상으로 만들 수있는 트릭이 있습니까?Java Swing : 2 가지 다른 패널에 컴포넌트를 배치하는 방법은 무엇입니까?

나는이 게시물에 내가 갖고 싶은 표현을 첨부합니다.

enter image description here

+2

* "일부 디자인의 경우 2 개의 패널에 Java UI 구성 요소가 있어야합니다."*이 특별한 요구 사항이있는 정확한 '디자인 용도'에 대해 구체적으로 설명하십시오. ASCII 아트 또는 * 의도 된 * (** 완료 ** - 모든 컨테이너를 무시하지만 모든 구성 요소를 표시하는) 레이아웃의 간단한 그림을 최소 크기에서 GUI의 레이아웃으로 제공하고 크기를 조정할 수 있으면 더 많은 너비와 높이를 제공하십시오. –

+3

[* 다른 사람 위에 구성 요소를 배치하는 방법?] (http://stackoverflow.com/q/14675914/230513) – trashgod

답변

-1

당신이 패널에 대한 repaint 방법을 덮어 쓰기 어떤 패널에 구성 요소를 추가하지 않을 경우 그것은 가능하지만,이 솔루션은 너무 복잡합니다.

구성 요소는 하나의 패널에만 속할 수 있습니다. 레이아웃 관리자
https://docs.oracle.com/javase/tutorial/uiswing/layout/none.html

2 OverlayLayout에없이

1 :

당신은 레이아웃이 두 ​​가지 옵션이 세 가지 요소를 포함 세 번째 패널을 사용할 수 있습니다 레이아웃https://docs.oracle.com/javase/8/docs/api/javax/swing/OverlayLayout.html

+0

에서 제안 된 방법 중 하나를 선택하십시오.이 솔루션에 대해 생각했습니다. 그렇다면 : 요소 중 하나 ("JComponent")를 다른 요소 위에 놓는 방법? "Z 색인"또는 그와 비슷한 것이 없습니다 ... – user1943797

+0

주문 (z- 색인이라고 함)은 요소가 컨테이너에 추가되는 순서에 따라 부여됩니다. –

+0

* 레이아웃 관리자 없음 * NOOOOOOOOOO !!!!!!!!!!!!! 'null-layout '의 사용을 권장하지 마십시오. [null layout is evil] (http://www.leepoint.net/GUI/layouts/nulllayout.html) 및 [이 질문에 대한 답변] (http : // stackoverflow.com/questions/6592468/why-it-frowned-on-use-null-layout-in-swing)을 사용하면 왜 나쁜 습관인지 알 수 있으므로 권장하지 마시기 바랍니다. – Frakcool

2

마찬가지로 y 각 구성 요소에는 정확히 하나의 부모가 있어야합니다. 따라서 JPanel 1, JPanel 2 및 JComponent를 공통 컨테이너에 추가해야합니다.

JPanel 1 및 JPanel 2를 BorderLayout 또는 GridLayout과 함께 다른 JPanel에 추가 한 다음 JPanel 및 오버레이 JComponent를 또 다른 JPanel에 추가하고 사용자 정의 레이아웃 관리자를 사용하는 것이 좋습니다.

인터페이스 LayoutManager을 살펴보면 컨테이너의 구성 요소 경계와 위치를 정렬합니다. 자신이 원하는 것을 알고 있다고 가정하면 실제로 구현하기가 어렵지 않습니다. 이 특정의 경우, JComponent는 2 개의 JPanel 컴퍼넌트에 대해서 배치 할 수 있습니다. 이것들은 명시 적으로 LayoutManager 구현에 건네 줄 수가 있습니다.

이것은 매우 구체적인 해결책이지만, LayoutManager 대신 LayoutManager2을 사용하여 일반화 할 수도 있습니다. LayoutManager2을 사용하면 구성 요소를 배치 할 제약 조건 객체를 사용할 수 있습니다. 각 제약 조건은 구성 요소의 레이아웃을 설명하는 일반 Java 객체입니다. 사용 된 구현 LayoutManager2에만 해당됩니다.