禁用modify \ delete JTextArea内容(但不能插入)

时间:2014-01-20 14:50:07

标签: java swing jtextarea

我有JTextArea组件,我需要禁用用户在组件中修改\删除当前内容。用户最后只能添加\插入一些文本,但setText方法必须照常工作。

TNX

2 个答案:

答案 0 :(得分:2)

  

我需要禁用用户修改\删除组件中的当前内容。

textArea.setEditable( false );
  

用户最后只能添加\插入一些文本,但setText方法必须照常工作。

您应该有一个“添加文本”按钮,该按钮将从单独的文本字段中获取文本,然后使用JTextArea的append(...)方法将文本附加到文档。

答案 1 :(得分:-1)

你能发布一个已有的例子吗?

为了澄清,如果您希望用户无法使用某些内容,您可能需要手动重新插入原始文本。我不确定JTextArea使用的编辑器,但你可以尝试覆盖它。

令人震惊的代码我现场想出来,你可以更容易地做到这一点:

private static String mand = "mandatory.";
private static JTextArea test = new JTextArea(mand);

public static String getMand() {
return mand;
}

public static JTextArea getTest() {
return test;
}

public static void setMand(String mand2) {
mand = mand2;
}

public static void setTest(JTextArea test2) {
test = test2;
}

getTest().addKeyListener(new KeyListener() {
    @Override
    public void keyPressed(KeyEvent arg0) {
        // do nothing
    }

    @Override
    public void keyReleased(KeyEvent arg0) {
        // do nothing
    }

    @Override
    public void keyTyped(KeyEvent arg0) {
        if(getTest().getText().startsWith(getMand())) {
            System.out.println("good, text still present");
            setMand(test.getText());
        } else {
            getTest().setText(getMand());
        }
    }

});

警告 ::如果用户在向JTextArea添加信息时出错,则代码将不允许用户修复这些错误。

在JDK(/ JRE)7下成功测试。