我已经通过继承orignal DocumentFilter
类并覆盖它的insert
和replace
方法来实现文档过滤器。它响应除 Enter 键之外的所有键。我的意思是,当我按 Enter 时,它应该转到我JTextPane
的下一行,但它没有这样做。那么如何让我的Enter
密钥正常工作呢?
代码
class UrduFilter extends DocumentFilter {
//My urdu filter overriding insertString and replace
char urduChar;
String urduString;
public void insertString(DocumentFilter.FilterByPass fb, int offset,
String text, AttributeSet attr) throws BadLocationException {
System.out.println("\n" + text);
urduChar = Translate.translateToUrdu(text.charAt(0));
urduString = Character.toString(urduChar);
fb.insertString(offset, urduString, attr);
}
//no need to override remove(): inherited version allows all removals
public void replace(DocumentFilter.FilterByPass fb, int offset, int length,
String text, AttributeSet attr) throws BadLocationException {
urduChar = Translate.translateToUrdu(text.charAt(0));
System.out.println(text + " ... " + text.charAt(0));
urduString = Character.toString(urduChar);
fb.replace(offset, length, urduString, attr);
}
}
感谢。
答案 0 :(得分:3)
Translate.translateToUrdu(char)
对输入键字符(13)的作用是什么?
这似乎是问题,因为你说你没有使用ActionListener
答案 1 :(得分:3)
我的意思是如何使用keyListener或actionListener使插入符号移动到下一行?
默认情况下,当按下Enter键时,会在文档中插入换行符。
如果你不喜欢这种行为,那么你需要用你自己的自定义动作替换默认动作,将Caret放在下一行的开头。
阅读Key Bindings,了解有关如何执行此操作的详细信息。当您创建自定义操作时,您应该能够使用Text Utilities类来帮助您将Carat放在下一行。
答案 2 :(得分:-2)
尝试使用addKeyListener()
并手动处理Enter键