に基づいて (リッチ) エディターを開発していSWT StyledText
ます。今まで解決できなかった機能が 1 つあります。ユーザーが 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());
}
}
});