我有JTextArea组件,我需要禁用用户在组件中修改\删除当前内容。用户最后只能添加\插入一些文本,但setText方法必须照常工作。
TNX
答案 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下成功测试。