我正在编写一个 DocumentFilter,它将输入到 JTextField 中的所有单词“top”替换为逻辑顶部符号。
使用这个代码很好,但是它很烦人,因为用户必须重新输入他们的空间,他们可以这样做并且文本继续在同一行
temp.replaceAll("\\btop\\b", "\\\u22A4" );
使用此代码并添加替换空间会导致顶部符号和 JTextField 中的所有文本在用户继续输入文本时略微向上推,然后进入下方并开始新行
temp.replaceAll("\\btop\\b", "\\\u22A4 " );
谁能解释这种行为并希望提供解决方案?谢谢你。
@Override
public void replace(FilterBypass fb, int offset, int length,
String string, AttributeSet attr)
throws BadLocationException {
int totalLength = fb.getDocument().getLength();
String temp = fb.getDocument().getText(0, totalLength);
temp = temp.replaceAll("\\btop\\b", "\\\u22A4" ); //needs space
super.remove(fb, 0, totalLength);
super.insertString(fb, 0, temp, attr);
super.replace(fb, offset, length, string, attr);
}