2012-08-23 4 views
0

Jframe에 두 개의 JPanel이 있습니다. 상단 패널에는 하나의 JCombobox가 있습니다. 하단 패널은 상단 패널의 콤보 상자에서 선택한 항목을 기반으로 다양한 구성 요소에 의해 동적으로 채워집니다. 하단 패널에 추가 할 구성 요소의 유형과 수는 항상 동적입니다. 아래 예 -JPanel의 구성 요소 값 가져 오기

낮은 인 JPanel :

JLabelA : JComboBox에

JLabelB : JComboBox의 + JTextField를

JLabelC : JCombobox1 + JCombobox2 + JCombobox3

JLabelD : JList의

사용자는 원하는 구성 요소의 값을 선택하거나 입력 한 다음 제출 단추를 클릭 할 수 있습니다. 버튼 클릭. 사용자 지정 유효성 검사를 수행해야합니다 (예 : 일부 구성 요소는 필수, 일부 JLabelC의 경우 3 가지 콤보 상자 모두에서 값이 선택됨). 모든 유효성 검사가 통과되면 하단 패널에서 사용자가 선택/제공 한 값을 가져와야합니다. 하단 패널의 구성 요소 이름은 고정되어 있지 않으므로 값을 직접 가져올 수는 없습니다. 한 가지 방법은 하나씩 하단 패널의 모든 구성 요소를 가로 질러 값을 선택하는 것입니다. 이것은 사용자가 입력을 제공 한 곳을 가로 질러 가면서 모든 것을 탐색해야하므로 매우 효율적으로 보이지 않습니다.

는 Queries-

1) 우리는) ​​우리가 자바 스크립트 유효성 검사에서 할 수있는 (구성 요소에 대한 검증을 첨부 할 수 있습니다?

2) 구성 요소 값을 가져 오는 다른 방법을 제안하십시오.

+0

구성 요소를 만들거나 배치하는 동안 콤보 상자 등에 대한 참조를 유지할 수 있습니까? – EthanB

+0

예. 할 수 있습니다. 하지만 두 개의 JTextField 또는 JcomboBoxes를 어떻게 구별 할 것인가? 위의 예에서 주어진 네 가지 구성 요소 조합은 네 개의 '유형'이며 각 '유형'은 패널에 여러 번 나타날 수 있습니다. 각 '유형'을 작성하는 코드는 동일하며 여러 번 호출됩니다. 내가 알 겠어? –

답변

0

JComponents를 통과하고 콤보 상자, 텍스트 필드 등의 용도로 범용 청취자를 바인딩하거나 언 바운드하는 코드를 보았습니다 (모든 코드에 "더러운"청취자를 첨부하기위한 것입니다). 사용자가 저장되지 않은 변경 사항을 남겨 둘 수 없도록하는 편집 가능한 위젯).

실시간 유효성 검사를 수행하려면 ChangeListeners 또는 ActionListeners를 JComboBoxes 또는 JLists에 첨부하고 DocumentListeners를 JTextField 문서에 첨부 할 수 있습니다. InputVerifiers를 사용해 보았습니다 만, 일반적으로 컴포넌트 포커스를 가지고 다룰 때 사용자에게 문제가됩니다.

관련 문제