我正在实现一个基于JTextPane的文本编辑器。 目前,当我有一段选定的文本时,按TAB键会删除所选的文本。我想更改此行为,以便TAB将缩进所选文本。
如何去做?
答案 0 :(得分:5)
以下内容:
public void keyPressed ( KeyEvent event ) {
switch ( event.getKeyCode ()) {
case KeyEvent.VK_TAB :
insertTabChar ( event.isShiftDown ());
event.consume ();
break;
case KeyEvent.VK_ENTER :
snapshot ();
insertNewLine ();
event.consume ();
break;
}
}
你有一些课程可以做到这一点,比如this one。
特别是功能
/**
* manage keyboard tabbing, implementing blockindent.
* @param isUnindent
*/
private void insertTabChar ( boolean isUnindent ) {
snapshot (); // snapshot current setup
if ( isSelection ) { // blockindent
可能会满足您的需求。
答案 1 :(得分:2)
另一种方法是重新定义与TAB键关联的JTextArea组件的操作。看看ActionMap。