2010-06-03 5 views
0

용 Java의 JFormattedTextField 삭제 버그에 대한 대안 Mac OS X 용 최신 Java 업데이트에는 JFormattedTextFields의 삭제가 두 번 수행되도록하는 버그가있는 것으로 보입니다. http://lists.apple.com/archives/java-dev/2010/May/msg00092.htmlMac OS X 10.6 업데이트 2 (1.6.0_20)

삭제 키를 누를 때 DefaultEditorKit.deletePrevCharAction이 두 번 호출됩니다.

해결 방법에 대한 제안 사항이 있습니까?

필자는 텍스트 필드에 대한 삭제 작업을 어떻게 든 이러한 중복 호출을 걸러 낸 패치 된 버전으로 대체하려고합니다.

답변

2

내 해결, 즉 아주 잘 작동하는 것 같군 :

public class PatchedTextField extends JFormattedTextField { 

    public PatchedTextField() { 
     super(); 

     final Action originalDeleteAction = 
      getActionMap().get(DefaultEditorKit.deletePrevCharAction); 

     getActionMap().put(DefaultEditorKit.deletePrevCharAction, 
      new AbstractAction() { 
       ActionEvent previousEvent; 

       public void actionPerformed(ActionEvent e) { 
       // Filter out events that happen within 1 millisecond from each other 
       if (previousEvent == null || e.getWhen() - previousEvent.getWhen() > 1) { 
        originalDeleteAction.actionPerformed(e); 
       } 
       previousEvent = e; 
      } 
     }); 
    } 
} 

내가 지금까지 발견이 밀리 초 당 하나 개 이상의 문자를 삭제 할 수 없다는 것입니다 않은 유일한 단점.

+1

OS가 필요하지 않은 곳을 추가하지 않으려면 OS와 Java 버전을 확인하는 것이 적절하다고 생각합니다. –