Java Swing TextArea“Sticky Text”

时间:2015-12-05 17:42:12

标签: java swing textarea

我正在尝试使用包含无法删除/更新的文本的java创建TextArea。话虽这么说,用户仍然可以添加到TextArea并删除自己的文本。

我尝试了解TextArea的长度并听取'退格'按键但是我仍然可以选择TextArea中的所有文本并替换它。

示例代码 (TA是TextArea)

TA.setText(cmdx);
cmdLength = TA.getDocument().getLength();

TA.getKeymap().addActionForKeyStroke(
        KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0), new AbstractAction() {
            public void actionPerformed(ActionEvent e) {
                TA.disable();
                try {
                    backSpace();
                } catch (BadLocationException ex) {
                    Logger.getLogger(CmdFrame.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });

AND

public void backSpace() throws BadLocationException {
    System.out.println("Backspace is pressed");
    int currentLength = TA.getDocument().getLength();

    if(currentLength > cmdLength)
    {
        Document doc = TA.getDocument();
        doc.remove(doc.getLength() - 1, 1);
        TA.enable();
    }
}

如果已经提出这个问题,我道歉。

提前谢谢你!

1 个答案:

答案 0 :(得分:1)

不要让用户直接键入文本,而是捕获相应的事件并手动将文本设置为textField。然后,您可以执行检查(例如,如果文本以粘性文本开头),如果不再在开头添加它。如果是,则只需在文本末尾添加键入的键 查看here以获取更多解决方案