【问题标题】:Unable to set a selection on a JTextField after a NavigationFilter在 NavigationFilter 之后无法在 JTextField 上设置选择
【发布时间】:2014-04-19 01:54:07
【问题描述】:

我设法像这样选择了我的 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);

提前谢谢你解释我不明白的地方。

【问题讨论】:

    标签: java swing selection jtextfield


    【解决方案1】:

    您应该在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);
        }
    }
    

    【讨论】:

    • 事实上 moveDot 没用。没有这种方法也能正常工作。但是您的更改也有效。谢谢!
    猜你喜欢
    • 2013-09-25
    • 1970-01-01
    • 2021-01-05
    • 2017-01-23
    • 2020-09-01
    • 2012-09-02
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多