사용자가 내 응용 프로그램의 데이터를 편집 할 수 있도록 간단한 Swing GUI를 개발했습니다. UI는 다소 단순합니다.JTabbedPane 패널의 탭 스위치 듣기
- JTabbedPane이 포함 된 JFrame입니다.
- 각 탭은 데이터 측면을 편집 할 수있는 도구를 제공하는 JPanel의 하위 클래스로 구성됩니다.
- 데이터 자체는 하나의 객체에 포함되며 참조는 각각의 JPanel에 전달됩니다.
하지만 문제가 있습니다. 다른 JPanel을 동기화해야합니다.
예를 들어 데이터 개체에는 사람 목록과 작업 목록이 저장됩니다.
하나의 JPanel은 사용자가 사람을 편집 할 수있게합니다. 그는 새로운 인물을 만들고 기존 인물을 삭제할 수 있습니다.
두 번째 JPanel을 사용하면 사람을 작업에 할당 할 수 있습니다.
두 JPanel은 처음 열 때 초기화됩니다. 구성 요소가 작성되고 레이아웃이 설정됩니다. 이제 사용자는 UI 작업을 시작할 수 있습니다.
- 그는 JTabbedPane의 첫 번째 탭을 열고 첫 번째 Person을 만듭니다.
- 그는 두 번째 탭을 엽니 다. 두 번째 탭의 구성 요소가 초기화되고 사용 가능한 한 사람이 나열됩니다. 그는 과제를 할당합니다.
- 그는 첫 번째 탭으로 돌아가서 두 번째 사람을 만듭니다.
- 그는 새로운 사람을 다루기 위해 두 번째 탭으로 다시 전환합니다.
두 번째 탭과 여기에 포함 된 JPanel은 이미 초기화되었습니다. JPanel이 업데이트되지 않는 한 사용자는 두 번째 사람을 볼 수 없습니다. 탭 2에 대한 내 JPanel 하위 클래스에 사용자 지정 업데이트 메서드를 구현했습니다. 어떻게 호출해야합니까?
다시 그릴 때 구성 요소에서 시작된 스윙 이벤트가 필요합니다.
사용자 및 작업 정보를 모두 포함하는 GUI 데이터 모델이 있어야합니다.각 JPanel은 컨트롤러 작업을 통해 업데이트되고 데이터 모델의 내용에 의해 업데이트됩니다. 이것은 GUI 애플리케이션을 구현하기위한 모델/뷰/컨트롤러 아키텍처입니다. –
MVC 패턴을 알고 있습니다. 꽤 많이 사용하면 스윙이 가능합니다. 구현하고자하는 것은 컨트롤러입니다. 데이터가 업데이트되었을 때 컨트롤러에 알릴 수있는 방법을 찾아야합니다. 빅터 세이퍼 트 (Victor Seifert)가 완벽한 대답을주었습니다. – lhk