2012-04-09 2 views
5

사용자가 탭을 클릭 할 때 수행하는 유효성 검사가 있습니다. validation == true이면 탭을 표시하거나 전환 할 수 있습니다. 지금은 유효성을 검사하기 위해 StateChanged 이벤트를 사용하고 있습니다. 문제는 탭을 클릭하면 탭 내용을 표시하고 유효성 검사가 == false이면 이전 탭으로 다시 전환된다는 것입니다. 나는 validation == true가 아니면 않는 한 그것을 전환하고 싶지 않다. 어떻게해야합니까? 잘못된 이벤트를 확인하고 있습니까? 모두 고마워요Java JTabbedPane을 사용하면 true 일 때만 Tab 키로 전환 할 수 있습니다.

+4

이상적인 UI/UX 방법은 'stateChanged' 이벤트에서 회선 논리 대신'pane.setEnabledAt (index, false); '호출을 사용하여 해당 탭을 "비활성화"하는 것입니다. –

+3

'JTabbedPane' 대신'CardLayout'을 사용하여 접근 할 수 있습니다 - 뷰가 언제 바뀌는지를 완전히 제어하십시오. '잠긴 탭'을 사용하면 JTabbedPane이 나에게 반 직관적입니다. –

답변

1

시도해보십시오. JTabbedPane.setSelectedIndex (int index).

+0

클리너 솔루션은'DefaultSingleSelectionModel.setSelectedIndex (index)'를 오버라이드하고 JTabbedPane에 대한 모델을 사용할 수 있습니다. 그러나 더 깨끗한 해결책은'DefaultSingleSelectionModel'을 오버라이드하여'VetoableChangeListener'를 지원하는 것입니다. – xmedeko

+0

절대적으로 동의합니다 : xmedeki 솔루션은 사파리입니다. – Zecas

3

validation.false 인 경우 tab.setEnabledAt (index, false)를 사용하고 validation = false 인 경우 tab.setEnabledAt (index, true)를 사용하면 다시 활성화 할 수 있습니다.

편집 : 탭을 사용 중지하면 회색으로 표시되어 사용자가 처음 클릭 할 수 없으므로 사용자가 탭을 클릭하기 전에 유효성 검사를 수행해야합니다.