代码之家  ›  专栏  ›  技术社区  ›  Itay Maman

覆盖jTextPane中选项卡的默认行为

  •  5
  • Itay Maman  · 技术社区  · 16 年前

    我正在实现一个基于JTextPane的文本编辑器。 当前,当我有一段选定的文本时,按Tab键将删除选定的文本。我希望更改此行为,使制表符缩进所选文本。

    怎么做呢?

    2 回复  |  直到 16 年前
        1
  •  5
  •   VonC    16 年前

    沿着这条线的东西:

    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
    

    可能只做你需要的。

        2
  •  2
  •   Rastislav Komara    16 年前

    另一种方法是重新定义与tab键关联的JTextArea组件的操作。看看行动地图。