我正在尝试使用包含无法删除/更新的文本的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();
}
}
如果已经提出这个问题,我道歉。
提前谢谢你!
答案 0 :(得分:1)
不要让用户直接键入文本,而是捕获相应的事件并手动将文本设置为textField。然后,您可以执行检查(例如,如果文本以粘性文本开头),如果不再在开头添加它。如果是,则只需在文本末尾添加键入的键 查看here以获取更多解决方案