2010-05-05 3 views
0

정적 레이아웃을 가진 간단한 스윙 기반 응용 프로그램을 몇 개 만들었지 만 적절한 키를 눌러 변경되는 여러보기를 포함하는 응용 프로그램을 만들려고 할 때 문제가 발생했습니다. 탐색 버튼.JPane 기반 뷰를 뒤집기위한 Java Swing 아키텍처

아이디어를 웹 사이트와 비교하면 모든보기에 특정보기에 액세스 할 수있는 단추가 있지만 단일 JFrame 내에서 작동합니다.

어쩌면 CardLayout (Cardlayout example)이 이런 종류의 구조에 적절한 해결책이 될 수 있지만, 나는이 구조체에 대한 적절한 해결책이 될 수 있지만, 위에서 설명한 것처럼 작은 자바 튜토리얼 예제에서와 같이 부모 클래스의 모든 것을 인스턴스화하는 것이 하나의 방법 일 수 있지만, 여러 뷰에서는 매우 깨끗하지도 않고 모듈화되지도 않습니다.

뷰 전환 방법에 액세스 할 수 있도록 어떻게 구현할 수 있습니까?

+0

JTabbedPane과 같은 것일 수 있습니다. – medopal

+0

당신은 무엇을하려고합니까, 일종의 마법사입니까? 그렇다면, 당신을 도울 수있는 몇 가지 오픈 소스 라이브러리가 있습니다 (그러나 나는 그들을 체크 아웃하지 않은 오랜 시간입니다). 그렇지 않으면 여러 가지 가능성 (예 : 동시에 여러보기)이 필요한 경우 도킹 라이브러리를 찾고있을 수 있습니다. 문제를 더 명확하게 설명하십시오. – jfpoilpret

+0

한 번에 하나의보기만으로이 프로젝트에 충분합니다. 목표는 목록과 버튼과 같은 몇 가지 기본 구성 요소가 포함 된 간단한 전체 화면 앱을 터치 스크린 인터페이스와 함께 사용하는 것입니다. 마법사는 순서가 아닌 자유롭게 이러한 견해 사이를 이동할 수 있어야하기 때문에 정확한 설명이 아닙니다. – imhotep

답변

2

예, CardLayout은 전환하려는 다양한보기가있을 때 특별히 사용됩니다. 분명히 @medoal과 마찬가지로 JTabbedPane도 사용할 수 있습니다.

  1. 이 패널을 작성하고 등록 주어진 인터페이스를 구현하는 객체를 가질 수 있도록 : 어쨌든, 당신은 당신이 볼 패널을 변경할 수 있도록 패널 내부에 버튼이있는 CardLayout을 사용하려는 생각, 당신이 할 것 것은 수 있습니다. 이 인터페이스는 CardLayout#show(Container, String) 메소드를 다루는 메소드를 포함합니다. 예를 들어, 패널의 이름이 모두 설정되어 있고 각 이름이 다르다고 가정하면 다음과 같이 작성할 수 있습니다.

    public interface PanelToggler { public void toggleTo (String name); }는 CardLayout를 포함하는 클래스에서

  2. , 당신은

    공공 무효 toggleTo (문자열 이름) { ((CardLayout) getLayout()). 쇼 (이, 이름) 같은 것을 함께 PanelToggler를 구현하는 것 ; }

이 방법은, 각 패널에서 CardLayout에서 각 버튼의 토글 볼 요소는 단순히 올바른 인수 toogleTo를 호출해야합니다.

+0

감사합니다. 이것은 완벽하게 해결되었습니다. 부모 요소의 내용을 제어하는 ​​구성 요소를 구현하기위한 일종의 표준 패턴입니까? 모든 예제와 튜토리얼은 너무 작아서 같은 클래스에서 인스턴스화 된 모든 컴포넌트와 리스너를 가지므로 실제로 부모 엘리먼트로 액션을 전달할 필요는 없다고 생각합니다. 아니면 완전히 다른 종류의 아키텍처로 해결할 수 있습니까? – imhotep

+0

실제로 이러한 샘플의 문제점은 실제 응용 프로그램의 복잡성을 종종 전달하지 않는다는 것입니다. 실생활에서, 내가 여기에서 드러내 듯이 (아이들이 부모를 제어 할 수있게하는 유일한 목적을 위해 "미니"인터페이스를 구성하는) 자신과 같은 패턴은 UI의 모든 구성 요소간에 최소한의 격리를 허용하는 데 종종 유용합니다. 이런 종류의 패턴을 사용하면 아이러니 컬하게 "아키텍트"라고 불릴 수도 있지만 코드는 항상 쉬운 리팩토링 (리팩터링은 UI 개발에서 훨씬 일반적입니다. UI 코드는 선택을 마케팅하는 결과 일뿐입니다). – Riduidel