2009-12-20 8 views
1

Swing을 통해 구현 된 GUI로 데스크탑 Java 애플리케이션을 개발 중입니다. JFrame을 만들고 추가, 편집, 삭제라는 세 개의 버튼을 추가했습니다.Java 데스크톱 애플리케이션의 JFrame

이제 사용자가 버튼을 클릭 할 때마다 해당 버튼과 관련된 3 가지 버튼 이외의 콘텐츠가 표시되기를 바랍니다.

이렇게 구현하는 방법은 무엇입니까? 그 3 개의 버튼 외에도 JPanel을 추가하고 그 버튼에 해당하는 내용을 JPanel에 추가해야합니까?

지금까지 JFrame을 촬영하고 3 개의 버튼을 추가했습니다. 그게 전부 야.

추가 버튼의 경우 일부 단추와 텍스트 필드를 추가하여 데이터베이스에 정보를 추가하려고합니다.

삭제 버튼의 경우 사용자가 삭제 버튼을 클릭 할 때 나타나는 텍스트 필드에 입력 된 정보를 기반으로 데이터베이스의 레코드를 찾기 위해 버튼을 추가하고 싶습니다.

수정 버튼의 내용과 비슷한 유형입니다.

+0

지금까지 가지고있는 코드 (필요한 경우 단순화 된 코드)를 게시 할 수 있습니까? – Ash

+1

"콘텐츠"는 무엇입니까? 문자열? 더 많은 컨트롤? 몇 가지 세부 사항이 도움이 될 것입니다. – Ash

답변

3

이렇게 구현하는 방법. 그 3 개의 버튼 외에도 JPanel을 추가하고 그 버튼에 해당하는 내용을 해당 JPane에 추가해야합니까?

괜찮을 것입니다. 버튼을 누르면 JPanel.removeAll()으로 호출하여 현재 컨트롤에있는 모든 컨트롤을 제거한 다음 푸시 한 버튼과 관련된 레이아웃을 다시 수행하면됩니다.

사용자 정의 스윙 컨트롤이있는 경우 BorderLayout을 사용하여 JPanel 사용자 지정 컨트롤을 추가하고 가운데에 배치하면됩니다.

다른 옵션은 CardLayout을 사용하고 사용자가 단추 중 하나를 누르면 카드를 뒤집을 수 있습니다. 단추 레이아웃이 절대로 바뀌지 않는다면 아마도 더 좋은 방법 일 것입니다. 물론 버튼 누름간에 내용이 변경되면 매번 레이아웃을 재실행해야합니다.

+1

CardLayout은 좋은 접근 방법입니다. –

-1

많은 Java 프로그래밍을 수행하지는 않았지만, 2-3 개의 다른 JPanel을 사용한다고 생각합니다. 클릭 한 버튼에 따라 필요한 트릭을 표시 할 수 있습니다.

이것이 올바른 접근 방법인지 확실하지 않습니다.

1

Chad's 또는 Alex's 중 하나라도 괜찮습니다. 과거에 스윙이 항상 패널이 바뀌는 것을 좋아하지 않는다는 것을 알았던 것처럼 변경 한 패널에 revalidate()repaint()의 조합을 호출해야 할 것입니다.

또한 추가/수정/삭제 버튼과의 상호 작용을 수동으로 코딩하는 대신 JTabbedPane을 사용해 보셨습니까?

+0

CardLayout이 올바른 대답입니다 - 이것을 선택하면 revalidate() 또는 repaint()가 필요하지 않습니다. – Nate

+0

CardLayout에서는 ID로 참조하지 않고 항상 카드를 "쓸어 넘기"않습니까? 이 경우 3 장의 카드 만 있으면 가장 좋겠지 만 10이나 20 장이 넘기면 어떻게 될까요? 일반적인 경우가 아닐 수도 있습니다. – Ash

+0

죄송합니다. CardLayout API를 제대로 읽으십시오. 제약 객체는 "빠른 임의 접근"을 위해 사용될 수 있습니다. 그래, 그래, CardLayout이 내가 이긴다. – Ash

-1

JFrame을 사용하여 모든 버튼을 추가하고 새 창에 대해 새 JFrame을 만들고 이전 창을 숨기려고했습니다. gven way가 더 좋습니다. 나는 지금 그렇게 할 것이다.

관련 문제