2012-10-31 3 views
0

기본 JPanel을 보유하는 기본 JFrame이 있습니다. 이 JPanel을 사용하여 다른 JPanel을 내 응용 프로그램에 첨부하여 응용 프로그램을 통한 탐색의 효과를 시뮬레이션하려고합니다. CardLayout이 작동하려면 JFrame은 일반적으로 JPanel에 표시되는 내용 (예 : 버튼, 드롭 다운 상자 등)을 제어 할 수있는 방법이 있어야한다는 것을 알았습니다. 내가하려고하는 것은 홈 페이지 JPanel)은 JFrame의 기본 JPanel에로드되고 사용자는 해당 홈 JPanel에서 사용 가능한 클릭 가능한 버튼/아이콘을 사용하여 탐색 할 수 있습니다.JFrame의 CardLayout JPanel GUI

JFrame과 기본 JPanel은 나머지 JPanels와는 별도의 클래스이므로 JPanel에서 버튼을 클릭하여 변경된 내용을 변경하려면 기본 JPanel에 액세스하는 데 문제가 있습니다. 다른 클래스 중 하나에서 이 주위에 어떤 방법이 있습니까?

또한 응용 프로그램에 필요한 모든 단추를 JFrame에 연결하고 거기에서 표시되는 JPanel을 제어하면 작동합니까? 필요에 따라 버튼을 보이게하거나 보이지 않게 할 수 있습니다. 이것이 의미가 있습니까?

내가 JFrame의 클래스에 전화 드렸습니다 코드입니다 :

private void jButton45MouseClicked(java.awt.event.MouseEvent evt) { 
    CardLayout card= (CardLayout) displayPanel.getLayout(); 
    card.show(displayPanel, "register"); 
} 

displayPanel는 모든 카드 및 jButton45을 통해 사이클이 JFrame의에서 "등록"이라는 제목의 버튼입니다 기본 패널입니다. "register"는 표시하려고하는 JPanel 변수의 이름입니다.

+1

몇 가지 코드를 보여줄 수 있습니까? –

+1

'show()'의 두 번째 인수는 변수의 이름이 아닙니다. 'add()'를 호출 할 때 제공하는 이름입니다. NetBeans GUI 작성기를 사용하는 경우 속성 창에서 설정할 수 있습니다. 패널을 선택하고 "Layout"으로 스크롤하십시오. 카드 이름을 원하는 String 값으로 설정하고'show()'를 호출 할 때이 같은 값을 사용하십시오. –

답변

2

이것은 디자인 문제와 같습니다. 몇 가지 코드가 없어도 특정 세부 정보를 제공 할 수는 없습니다. 즉, 기본 JPanel과 CardLayout을 참조하여 탐색을 제어하는 ​​버튼을 제공해야합니다. 여기에서 단순히 next(), previous() 또는 show()을 호출하는 것입니다.

부록 :

show()에 2 번째의 인수는 add()를 호출 할 때 사용자가 제공 한 이름입니다. NetBeans GUI 작성기를 사용하는 경우 속성 창에서 설정할 수 있습니다. 패널을 선택하고 "Layout"으로 스크롤하십시오. 카드 이름을 원하는 문자열 값으로 설정 한 다음 show()에 전화 할 때이 값을 사용하십시오.

+0

몇 가지 (위의 업데이트 된 게시물) 재 배열했습니다. 내가 쇼 기능을 호출하는있어하지만 JPanel 단추를 클릭하면 변경되지 않습니다, 뭔가 놓친 오전? – Mike

+0

** 업데이트 ** 다음 함수는 분명히 작동합니다.그냥 show()가 아니라, 잘못된 인수를 입력하지 않는다는 것을 알고 있습니다. 두 번째 인수는 카드의 문자열 이름입니다. – Mike

+0

@Mike 두 번째 인수는 "기본"패널에 추가 할 때 구성 요소에 준 이름 (이 경우 JPanel이라고 생각합니다)입니다. –

1

내비게이션 창 (집)과 CardLayout보기를 전환하는 데 사용되는 "기본값"사이에서 대화 할 수있는 모델을 사용하십시오.

기본적으로 모델에는 모델의 상태를 변경하고 관찰하기 위해 응용 프로그램의 두 부분에서 사용할 수있는 간단한 setter 및 getter가 있습니다. 모델이 변경되었다는 것을 이해 관계자에게 알리기 위해 어떤 종류의 수신기를 제공해야합니다. 가장 간단한 방법은 ChangeListener 또는 PropertyChangeListener입니다.

이렇게하면 시간이 지남에 따라 모델을 변경할 수 있습니다.