2012-05-03 7 views
2

後、私はそのように私のJTextFieldを選択するために管理:はJTextFieldの上の選択を設定できませんNavigationFilterを

jtfNumTag.setSelectionStart(0); 
jtfNumTag.setSelectionEnd(iMaxLenght); 

が、私は私のJTextFieldにNavigationFilterを追加する場合、選択は動作しませんでした。 NavigationFilterで選択ができなくなったかどうかはわかりましたが、なぜそれがそれを行うのかわかりません。

final int iMaxLenght = szValues[0].length(); 
NavigationFilter filter = new NavigationFilter() { 
    public void setDot(NavigationFilter.FilterBypass fb, int dot, Position.Bias bias) { 
     if (dot >= iMaxLenght) { 
      fb.setDot(iMaxLenght, bias); 
     } else { 
      fb.setDot(dot, bias); 
     } 
    } 
    public void moveDot(NavigationFilter.FilterBypass fb, int dot, Position.Bias bias) { 
     if (dot >= iMaxLenght) { 
      fb.setDot(iMaxLenght, bias); 
     } else { 
      fb.setDot(dot, bias); 
     } 
    } 
}; 
jtfNumTag.setNavigationFilter(filter); 

jtfNumTag.setSelectionStart(0); 
jtfNumTag.setSelectionEnd(iMaxLenght); 

私が理解できなかったことを前もって説明していただきありがとうございます。

答えて

1

fb.setDotの代わりに、NavigationFilter.moveDotの実装でfb.moveDot()と呼ぶべきでしょう。さもなければ、キャレットはまったく動かないでしょう。例:

public void moveDot(NavigationFilter.FilterBypass fb, int dot, Position.Bias bias) { 
    if (dot >= iMaxLenght) { 
     fb.moveDot(iMaxLenght, bias); 
    } else { 
     fb.moveDot(dot, bias); 
    } 
} 
+0

実際、moveDotは役に立たなかった。それはこの方法なしで働いた。しかし、あなたの変更も機能します。ありがとうございました! – M07

関連する問題