java - 无法在 NavigationFilter 之后在 JTextField 上设置选择

标签 java swing selection jtextfield

我设法像那样选择我的 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/

相关文章:

java - 无法格式化输出

Java 多项式加法

java - 如何按给定顺序返回数组元素?

algorithm - 从集合中选择元素,概率与元素值成正比

date - 选择以今天为默认日期的选项?

javascript - 如何取消选择 Monaco Editor 中的所有内容

java - 如何在Android中的TextView和EditText中显示来自API服务器的JSON数据?

java - Swing - 物体之间的巨大空间

java - 如何在 Java 中隐藏当前的 JPanel 并显示一个带有按钮的新面板?

Java JScrollPane 和 FlowLayout