Java 输入键在实现DocumentFilter时不起作用

Java 输入键在实现DocumentFilter时不起作用,java,swing,jtextpane,documentfilter,Java,Swing,Jtextpane,Documentfilter,通过继承原始DocumentFilter类并重写其insert和replace方法,我实现了一个文档过滤器。它响应除Enter键以外的所有键。我的意思是,每当我按下Enter键时,它都应该转到我的JTextPane中的下一行,但它没有这样做。那么,如何使我的Enter键正常工作呢 代码 class UrduFilter extends DocumentFilter { //My urdu filter overriding insertString and replace char ur

通过继承原始
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);
    }
}

谢谢。

尝试使用
addKeyListener()
并手动处理Enter键尝试使用
addKeyListener()
并手动处理Enter键翻译。translateToUrdu(字符)如何处理Enter键字符(13)?
这似乎是一个问题,因为您说您不使用
ActionListener

什么是
翻译。翻译乌尔都语(char)
与输入键字符(13)有什么关系? 这似乎是个问题,因为您说您不使用
ActionListener


我的意思是,如何使用keyListener或actionListener使插入符号移动到下一行

默认情况下,按Enter键时,将在文档中插入换行符

如果您不喜欢这种行为,则需要将默认操作替换为您自己的自定义操作,该操作将插入符号放在下一行的开头

请阅读以了解有关如何执行此操作的更多信息。当您创建自定义操作时,您应该能够使用该类帮助您将克拉定位到下一行


我的意思是,如何使用keyListener或actionListener使插入符号移动到下一行

默认情况下,按Enter键时,将在文档中插入换行符

如果您不喜欢这种行为,则需要将默认操作替换为您自己的自定义操作,该操作将插入符号放在下一行的开头



请阅读以了解有关如何执行此操作的更多信息。当您创建自定义操作时,您应该能够使用类来帮助您在下一行定位克拉。

您必须在与更改默认行为的
JTextPane
相关的
actionPerformed
方法中执行自定义操作。请发布相关代码。public void replace(DocumentFilter.FilterBypass fb,int offset,int length,String text,AttributeSet attr)抛出错误定位异常{//用于从键盘键入乌尔都语。乌尔都语=Translate.translateToUrdu(text.charAt(0));System.out.println(text+“--”+text.charAt(0));urduString=Character.toString(urduChar);fb.replace(offset,length,urduString,attr);}@Muhammed,DocumentFilter不影响回车键。你在使用中有密钥处理方法吗?还没有,但我可以实现一些keylistener。但是等一下,我需要添加keyListener还是actionListener?。对于这两种情况,我应该进一步做什么?我的意思是,我如何使用keyListener或actionListener使插入符号移动到下一行?您肯定在
actionPerformed
方法中做了一些自定义操作,该方法与更改默认行为的
JTextPane
相关。请发布相关代码。public void replace(DocumentFilter.FilterBypass fb,int offset,int length,String text,AttributeSet attr)抛出错误定位异常{//用于从键盘键入乌尔都语。乌尔都语=Translate.translateToUrdu(text.charAt(0));System.out.println(text+“--”+text.charAt(0));urduString=Character.toString(urduChar);fb.replace(offset,length,urduString,attr);}@Muhammed,DocumentFilter不影响回车键。你在使用中有密钥处理方法吗?还没有,但我可以实现一些keylistener。但是等一下,我需要添加keyListener还是actionListener?。对于这两种情况,我应该进一步做什么?我的意思是,我如何使用keyListener或actionListener使插入符号移动到下一行?-1,keyListener是旧的AWT解决方案。在Swing中,如果想在按下Enter键时执行特定功能,可以使用键绑定。我只想在按下Enter键时将插入符号移动到下一行。我的意思是编辑器中正常的输入键行为。-1,KeyListeners是旧的AWT解决方案。在Swing中,如果想在按下Enter键时执行特定功能,可以使用键绑定。我只想在按下Enter键时将插入符号移动到下一行。我的意思是编辑器中的正常输入键行为。Translate.translateToUrdu接收一个英文字符并返回一个urdu字符。但我做了一些机械操作,当按下回车键字符(我猜是10)时,不要调用这个函数。但是它对我也不起作用。这里有人告诉我JTextPane不支持action listener.Translate.Translate乌尔都语接收一个英语字符并返回一个乌尔都语字符。但我做了一些机械操作,当按下回车键字符(我猜是10)时,不要调用这个函数。但是它对我也不起作用。这里有人告诉我JTextPane不支持action listener。这就是我想问的,我已经覆盖了replace和insertString()documentFilter类的方法,那么为什么按下Enter键时不将defaut换行符插入文档。我不知道您的问题是什么,因为您没有发布SSCCE。Ring Bearner已经问过您translate()方法的作用。Gid去掉你的翻译代码,看看会发生什么。如果它工作,那么您就知道您的换行符转换错误。好的,非常感谢,问题出在translate()中,我已经解决了。非常感谢。那么,你是否接受了持戒人为你指出正确方向的回答?我已经下了一张支票,当有戒指的时候