我正在开发一个基于SWT StyledText
的(丰富)编辑器。有一个功能,我到现在都无法解决它。当用户按下Ctrl + u时,我希望我的编辑器将光标放在标签宽度上作为上一行的开头(当用户按Enter键时类似于Eclipse或Notepad ++)。我尝试过几种方法,但对我来说没什么用。请看一下我的例子。欢迎提出任何建议。提前谢谢。
StyledText text = new StyledText(shell, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
text.setTabs(5);
text.setText("");
text.setLeftMargin(5);
text.setBounds(0, 0, 512, 391);
text.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
int currentLine = text.getLineAtOffset(text.getCaretOffset());
int currCaretOffset = text.getCaretOffset();
if(e.stateMask == SWT.CTRL && e.keyCode == 'u'){
//text.setIndent(text.getOffsetAtLine(currentLine));//doesn't work
text.append("\n");
//text.append("\t");//doesn't work
text.setCaretOffset(text.getCharCount()+text.getTabs());//doesn't work
System.out.println("caret offset "+text.getCaretOffset());
}
}
});
答案 0 :(得分:2)
如果我理解正确,您可以将光标移动到下一行并将其缩进多少"白色空格"因为前一行有前导空格。
我很惊讶没有更好的方法来做到这一点(或者我可能还没找到),但是这样就可以了:
{{1}}