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 回答