Java 바인딩 Jtextfield-> java.lang.integer 문제
문제
정수 변수에 묶인 텍스트 필드가 있으므로 사용자 가이 필드에 숫자를 입력하면 바인딩 메커니즘은 자동으로 텍스트를 정수로 변환 하고이 값을 Var로 설정합니다. 문제는 사용자 유형 텍스트 텍스트 필드로 텍스트 필드로 텍스트가 값 만 변환되므로 텍스트 필드 내부에 법적 값이 없기 때문에 사용자가 값 만 변환하고 사용자가 일부 문자를 입력하면 바인딩이 활성화되지 않습니다. 그러한 상황에서 필요한 것은 바인딩이 널 값으로 변화를 유발해야하므로 정수 var에 널이 있습니다.
따라서 사용자 가이 필드를 비워 두거나 숫자가 아닌 것을두면 바인딩은 널 값 전파를 유발해야합니다. 이벤트를 무시하지 말고 ... 텍스트 필드에서 이벤트가 없으면 어떻게 할 수 있습니까?
Java 바인딩이 기본 동작을 변경할 수 있습니까?
해결책
바인딩 메커니즘의 동작을 변경하는 것 외에도, 숫자 만 받아들이는 텍스트 필드에 포피터를 넣을 수 있습니다. javax.swing.text.defaultformatter를 확장해야합니다. 그런 다음 일반적인 jtextfield 대신 jformattedTextField를 사용합니다.
결과는 텍스트 필드에서 유효한 입력 만 받고 잘못된 값에서 아무것도 만들 필요가 없다는 것입니다.
다른 팁
당신이 필요로하는 것은 JFormattedTextField 그리고 숫자.
제휴하지 않습니다 StackOverflow