2014-01-14 5 views
1

둥근 것을 나는 5JFormattedTextField에 내가 JFormattedTextField에 있고, 내가 원하는 번호를

1002-> 1000

304, 가장 가까운 배수로 반올림 것, 숫자, 예를 들어 1002를 입력하려고 할 때 > 305

6-> 5

9-> 10

1-> 0

,

이미 설치 그룹화를 취소 할 수있는 숫자 형식, 그리고 받아들이는 숫자 만이

NumberFormat format=NumberFormat.getInstance(); 
format.setGroupingUsed(false); 
pun1[i]=new JFormattedTextField(format); //pun1 and pun2 are the arrays of FIELDS 
pun2[i]=new JFormattedTextField(format); 

내가 어떻게이 문제를 해결할 수 있습니다거야?

필자는 그룹 문자가 나타날 때처럼 번호를 쓰고 있지만 필드 내부에서이 편집을 원합니다!

답변

0

int 인수에 대해 작동합니다 Integer.valueOf(string); 및 방법에 인수로 되었 :

public int roundToClosestFive(int num) { 
    return (int) (Math.round(num/5.0) * 5); 
} 

당신은 당신이 할 수있는 입력 한 문자열의 int 값을 얻기 위해, 기억하십시오. JFormattedTextField 내부의 텍스트를 포커스 변경 또는 입력 변경하려면 JTextFormattedTextField에 추가 할 수있는 PropertyChange 청취자의 propertyChange() 메소드에서 위의 메소드를 호출 할 수 있습니다. propertyChange() 방법 이런 식으로 뭔가 :

public void propertyChange(PropertyChangeEvent e) { 
    Object source = e.getSource(); 
    if (source == pun1[i]) { 
     ((JFormattedTextField) source).setText("" 
       + roundToClosestFive(((Number)pun1[i].getValue()).intValue())); 
    } 
} 
+0

내가 필드의 편집 중에이 변화를 원하는, 그래서 난 "1003"를 작성하고 1005 –

+0

확인에 필드 변경 내 수있어, 나는에 추가 한 내 대답. 그게 너에게 효과가 있니? 다시 말하지만, 위의 경우에는 'JTextFormattedField'에서 포커스를 이동하거나 변경하려는 필드 내부의 텍스트에 대해 Enter 키를 눌러야합니다. –

+0

아니요, 작동하지 않습니다 : \ JTextFormattedField가 아니라면 무엇을 제안합니까? –