SWT StyledText:将下一行的插入符号放在上一行

时间:2016-03-29 06:47:38

标签: java position swt caret styledtext

我正在开发一个基于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());
            }               
        }
    });

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您可以将光标移动到下一行并将其缩进多少"白色空格"因为前一行有前导空格。

我很惊讶没有更好的方法来做到这一点(或者我可能还没找到),但是这样就可以了:

{{1}}