【发布时间】:2014-07-09 07:36:49
【问题描述】:
我有使用 Eclipse RCP 创建的文本编辑器。我已经用 ITextListener 注册了编辑器。 要求:当用户按下回车时,在因回车而产生的新行上加上六位数字。
我已经在监听器中捕获了回车键事件。 我已经准备好我的六位数号码了。 我只想将该数字添加到正在生成的新行中。
请在下面找到我的代码 私有类 VPTextListener 实现 ITextListener{
@Override
public void textChanged(TextEvent event) {
if(null!=event && null!=event.getDocumentEvent()){
String text = event.getDocumentEvent().fText;
if(text.equals(AGConstants.LINE_SEPARATOR)){
int offset = event.getDocumentEvent().fOffset;
try {
int offsetLine = event.getDocumentEvent().fDocument.getLineOfOffset(offset);
int lineLength = event.getDocumentEvent().fDocument.getLineLength(offsetLine);
int offsetOfLine = event.getDocumentEvent().fDocument.getLineOffset(offsetLine);
String line = event.getDocumentEvent().fDocument.get(offsetOfLine, lineLength);
if(!ModelUtil.isEmpty(line) && line.length()>=6){
String seqNum = line.substring(0, 6);
int iSeqNum = ModelUtil.makeNullZero(seqNum);
if(0==iSeqNum){
return;
}
String newSeqNum = ModelUtil.make6(iSeqNum+1);
event.getDocumentEvent().fDocument.replace(offset+2, newSeqNum.length(), newSeqNum);
}
} catch (BadLocationException e) {
e.printStackTrace();
}
}
}
}
}
但在执行后它给出了 BadLocationException。
请帮助我。 提前致谢
【问题讨论】:
-
'offset + 2' 是文档中的有效位置吗?如果要插入文本而不是替换现有文本,
replace的第二个参数应为 0。 -
实际上我想在用户按下回车时插入文本。 event.getDocumentEvent().fDocument.replace(offset, 0, text)... 它正在插入文本,但后来的行为很奇怪。按下箭头键后,文本正在发生变化。
标签: java eclipse-rcp