2014-04-08 2 views
0

텍스트 필드에 특수 문자를 추가하고 싶습니다. 예를 들어, 사용자가 입력 한 날짜 사이에 /을 자동으로 추가하고 싶습니다. 숫자의 일부 숫자 사이에 공백을 추가하십시오. "2020 2020 2020 2020"javafx의 텍스트 필드에 특수 문자 추가

이 코드를 사용했지만 제대로 작동하지 않습니다.

textfield.textProperty().addListener(new ChangeListener<String>(){ 
    @Override 
public void changed(ObservableValue<? extends String> ov, String t, String t1) { 
     if(t1.length()==4 || t1.length()==9 || t1.length()==14){ 
      textfield.setText(t1+" "); 
      System.out.println("space added"); 
    } 
} 

}

+0

나는 당신이 방법을 구현해야한다고 생각 : changed(). http://docs.oracle.com/javafx/2/api/javafx/beans/value/ChangeListener.html – bgth

+0

감사합니다. 여기에 쓰는 걸 잊었습니다. 하지만 주 프로그램에 썼습니다. 그래서 제 문제는 아닙니다. – faraa

+0

t1의 값은 무엇입니까? 그것은 루프 안으로 들어가는가? 그렇다면 텍스트 영역을 입력하거나 텍스트 영역 외부를 클릭 한 후 탭을 눌러 보셨습니까? 메서드가 실행됩니까? – bgth

답변

1

이 잘 공간을 추가합니다. 문제는 여분의 텍스트를 추가 한 후 캐럿 위치를 이동하려고한다는 것입니다. textfield.getCaratPosition()을 사용하여 현재 위치를 찾고 textfield.positionCarat(...)을 사용하여 변경할 수 있습니다.

로직은 상당히 복잡해지며 사용자가 수행하는 작업과 텍스트 필드의 동작 방식에 크게 의존합니다. 예 : 사용자가 무언가를 삭제했기 때문에 텍스트가 변경되면 어떻게 될까요? 복사 및 붙여 넣기는 어떨까요?

+0

예, 당신 말이 맞습니다. 너무 복잡합니다! 그리고 아무 해결책도 없습니까? 그것을 할 도서관이 있습니까? 다른 프로그래머들은 무엇을합니까 ??? !! – faraa