JTextArea,JTextField,如何用另一个字符串将插入符号替换为左侧的文本

时间:2017-08-20 07:06:43

标签: java jtextfield jtextarea

我正在制作文字处理程序,如果用户按下' a' (' a'仅用于演示,我有一个特殊字符列表),它会用一个字符串替换插入符号左边的一些字符。

我试过" setText"方法,但它被替换,然后移动插入符号和文本组件滚动到最后,我想要的是插入符号不移动到其他地方,文本组件不滚动到最后,我怎么能编码做到这一点(我压倒一切processKeyEvent)?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

尝试使用文档过滤器:

    JTextArea textArea = new JTextArea();

    ((AbstractDocument) textArea.getDocument()).setDocumentFilter(new DocumentFilter() {            
        @Override
        public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs)
                throws BadLocationException {

            if ("a".equals(text)) {
                text = "B";
            }               

            super.replace(fb, offset, length, text, attrs);
        }
    });