JTextField に入力されたすべての単語「top」を論理的な top 記号に置き換える DocumentFilter を作成しています。
このコードを使用しても問題ありませんが、ユーザーがスペースを再入力する必要があり、テキストが同じ行に続くため、面倒です。
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);
}