gpt4 book ai didi

java - 向 Documentfilter 添加退格键

转载 作者:行者123 更新时间:2023-12-01 13:46:36 26 4
gpt4 key购买 nike

我有一个程序,可以从 JTextField 中删除所有非数字字符并将其限制为 5 位数字。但此文档过滤器还删除了退格功能,这意味着我无法编辑已完成的输入。如何在不删除过滤器的情况下再次添加退格键?

编辑:谢谢您的回答。我已将该功能添加到“public void remove”中,现在我的删除功能再次起作用。但我注意到它向后存储我的文本输入。如果我写“12345”,然后使用我的 (int length-1) 它会删除“1”,然后删除“2”,依此类推。为什么要这样做?

public class onlyNumericDocumentFilter extends DocumentFilter {

@Override
public void insertString(DocumentFilter.FilterBypass fb, int offset,
String string, AttributeSet attr) throws BadLocationException {
if (fb.getDocument().getLength() + string.length() > 5) {
return;
}
fb.insertString(offset, string, attr);
}

@Override
public void remove(DocumentFilter.FilterBypass fb, int offset, int length)
throws BadLocationException {

//edit:
fb.remove(length-1, 1);


// fb.insertString(offset, "", null);
}

@Override
public void replace(DocumentFilter.FilterBypass fb, int offset, int length,
String text, AttributeSet attr) throws BadLocationException {
if (fb.getDocument().getLength() + text.length() > 5) {
return;
}
fb.insertString(offset, text.replaceAll("\\D", ""), attr);
}
}

最佳答案

您在此处禁止删除

public void remove(DocumentFilter.FilterBypass fb, int offset, int length) throws BadLocationException 
{
fb.insertString(offset, "", null);
}

关于java - 向 Documentfilter 添加退格键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20324184/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com