我设法像那样选择我的 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);
预先感谢您向我解释我不明白的地方。
最佳答案
您应该在 NavigationFilter.moveDot
实现中调用 fb.moveDot()
而不是 fb.setDot
。否则插入符号根本不会移动。例如:
public void moveDot(NavigationFilter.FilterBypass fb, int dot, Position.Bias bias) {
if (dot >= iMaxLenght) {
fb.moveDot(iMaxLenght, bias);
} else {
fb.moveDot(dot, bias);
}
}
关于java - 无法在 NavigationFilter 之后在 JTextField 上设置选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10439641/