2010-08-22 2 views
1

사용자에게 "실시간"유효성 검사를 제공하는 양식 작업 중 하나의 문제가 있습니다.InputVerifier 및 여러 필드

목표는 자바 스크립트 기반 유효성 검사기와 동일한 방식으로 데이터가 허용되거나 거부되면 사용자에게 표시하기 위해 필드 (이 경우 JSpinner) 근처에 레이블을 지정하는 것입니다.

class MyVerifier extends InputVerifier{ 

    static final double MAX_VALUE = 30; 

    @Override 
    public boolean verify(JComponent input) { 
     JTextField tf = (JTextField) input; 
     Double value = Double.parseDouble(tf.getText().replace(',', '.')); 
     return (value>1); 
    } 

    @Override 
    public boolean shouldYieldFocus(JComponent input) { 
     boolean isValid = super.shouldYieldFocus(input); 
    if (isValid) { 
      jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("resources/accept.png"))); 
      jLabel1.setText(""); 
    } else { 
      jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("resources/exclamation.png"))); 
      jLabel1.setText("The number of items must be greater than 1"); 
    } 
     return true; 
    } 
} 
:

문제는이, 을 archieving 위해 내가 해당 라벨 내가이 분야만큼 확인 프로그램을 작성하는 것입니다 발견 한 유일한 방법,이 방법에 대한 값을 설정해야한다는 것입니다

그런 다음 jLabel2와 동일한 코드 ... 이렇게하려면 다른 방법이 있어야합니다.

미리 감사드립니다.

답변

1

텍스트 필드 및 관련 레이블 구성 요소에 대한 해시 맵을 사용할 수 있습니다. 그런 다음 shouldYieldFocus 메서드에서 유효성 검사중인 텍스트 필드에 대한 관련 레이블을 검색합니다. 그런 다음 레이블의 텍스트/아이콘을 적절하게 설정할 수 있습니다.

아마도 레이블과 텍스트 메시지를 포함하는 secound Hashmap이 필요합니다.

+0

완벽한을 찾을 수 있습니다, 감사합니다! –

1

유효성을 검사하는 JComponent 옆의 팝업으로 JDialog를 사용할 수도 있습니다. 이 JDialog 팝업에는 각 Jcomponent 옆에 표시 할 메시지를 캡슐화하는 JLabel이 있습니다. 유효성 검사를 수행중인 Jcomponent를 기준으로 팝업의 위치를 ​​계산하기 만하면됩니다.

당신은 좋은 예 here