2012-07-24 2 views
0

저는 여러 화면이있는 곳에서 프로그램을 개발하고 있습니다. 예를 들어 초기 레이아웃에서 파일 만들기 또는 파일 편집의 두 가지 버튼을 제공하는 프로그램을 생각해보십시오. 하나를 클릭하면, 사용자는 그들이 누르는 버튼을 지원하는 새로운 화면으로 이동합니다. 그런 다음 다시 버튼을 클릭하면 프로그램의 기본 화면으로 돌아갑니다. 나는 이런 식으로 분리 된 메뉴를 가장 잘하는 방법을 궁금해합니다. 각 화면을 설정하는 별도의 메소드를 만든 다음 "뒤로"버튼과 같은 버튼을 클릭 할 때 적절한 메소드를 호출하는 것이 가장 좋을까요? 이것은 내가 생각하고 있었던 것이지만, 이것을 수행 할 수있는 많은 방법이 있으므로, 나는 화면을 변경하는 더 나은 방법에 대한 의견을 듣고 싶습니다. 화면의 상태에서 같은 예를 들어, 이전 화면의 상태 (에 의존하는 경우 감사합니다, AJ스윙에서 별도의 화면을 만드는 방법은 무엇입니까?

+2

모니터 (또는 : GraphicsEnvironment, GraphicsDevice) 에서처럼 "화면"을 의미하지는 않는다는 느낌을받습니다. 화면에서 정확히 무엇을 의미하는지에 대한 약간의 설명이있을 것입니다. –

+0

나는 그것이 다소 혼란 스러울 수도 있다고 생각했지만, 그것을 가장 잘 표현하는 방법을 확신하지 못했습니다. 설치 마법사에서 "다음"또는 "뒤로"버튼을 클릭하면 창 내부의 모든 내용이 변경됩니다. 각각의 분리 된 것들은 제가 스크린을 고려하고있는 것입니다. "다음"을 클릭하면 다음 "화면"으로 이동합니다. 나는 그것을 설명 할 다른 방법을 정말로 모른다. –

+0

설명해 주셔서 감사합니다. 원하는 답변을 추가했습니다. –

답변

2

에 설명 된 단계를 따를 수 있습니다. 원래 질문에 대한 두 번째 의견을 바탕으로, 패널을 사용하는 것이 가장 좋습니다. 활동 각각에 대해 여러 패널을 사용에서

봐 당신이 원하는 :

JPanel firstPanel = new JPanel(); 
JPanel secondPanel = new JPanel(); 
JPanel thirdPanel = new JPanel(); 

가 초기화 할 때 모든 패널이 숨겨져 있는지 확인하고 간단하게 사용하여 버튼 클릭 이벤트에 따라 다른 하나의 패널을 교체 :

firstPanel.hide(); 
secondPanel.show(); 

사용하는 레이아웃에 따라 다른 기술도 있습니다. 당신의 BorderLayout을 사용하는 경우, 예를 들어, 오히려 제거 및 추가 (또는 보여주는 여러 패널을 숨기고)보다, 당신은 간단한 다른 패널 BorderLayout를 영역을 "대체"다음 재 검증 수 :

container.add(BorderLayout.CENTER, thirdPanel); 
container.validate(); 

참고 또한 다른 운영 체제 (Windows, Mac 등)은 다른 스타일을 고수하고 싶습니다. 예를 들어 일반적인 Windows 설치 프로그램에 대해 언급했습니다. 사람들은 설치 프로그램이 특정 방식으로보고 작동하도록 기대했지만 다른 운영 체제에서는 완전히 다른 기대치와 모양이 있습니다.

추가 읽기 :

Tutorial on using panels

Java SE 7 (JPanel API)


편집 : 나는 최고의 같은 별도의 메뉴를 수행하는 방법 궁금

. 각 화면을 설정하는 별도의 메소드를 만든 다음 "뒤로"버튼과 같은 버튼을 클릭 할 때 적절한 메소드를 호출하는 것이 가장 좋을까요?

이것은 개인적인 취향에 달려 있습니다. 시동시 모든 것을 초기화하고 패널간에 신속하게 교환하고 싶습니까 (또는 "스크린"이라고 부름), 또는 더 빠른 초기 시동을 원하며 필요할 때마다 각 구성 요소의 "게으른로드"를 필수적으로 갖고 있습니까? .

개인적으로 저는 초기화 과정에서 모든 것을 선택합니다 (응용 프로그램을 시작하는 동안 많은 작업을 수행하거나로드하지 않는 한). 이것은 정말로 개인적 선호에 달려 있습니다.


또 다른 편집 : 아마도 다른 레이아웃 스타일이 같은 뭔가를 당신을 도울 것입니다, 레이아웃에 대해 말하기 :이 다소 도와 준다

CardLayout tutorial

희망.

+1

아마도 내가 본 가장 심오한 대답 일 것입니다. 고맙습니다! –

1

에 대한 일반적인 수준의 작업을 개발하는 좋은 방법 위자드)는 this article

관련 문제