2

私はそのように私のJTextFieldを選択することができました:

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);

わからないことを先に教えていただきありがとうございました。

4

1 に答える 1

1

の代わりに、おそらく実装でfb.setDot呼び出す必要があります。そうしないと、キャレットはまったく移動しません。例えば:fb.moveDot()NavigationFilter.moveDot

public void moveDot(NavigationFilter.FilterBypass fb, int dot, Position.Bias bias) {
    if (dot >= iMaxLenght) {
        fb.moveDot(iMaxLenght, bias);
    } else {
        fb.moveDot(dot, bias);
    }
}
于 2012-05-03T22:46:08.780 に答える