2012-12-08 16 views
5

JavaFXのタブ幅を設定するにはどうすればよいですかTextAreaJavaFX TextArea:集計幅を設定する方法

TextAreaで表(タブキー)を使用すると、表の幅が広くなります。私は幅を制御したい、すなわち4つのスペースを使いたい。ドキュメントでは、これを行う方法が見つかりませんでした。

私は(taInputがTextAreaのです)、このコードを試してみましたが、それが必要として、それが動作していません。

taInput.setOnKeyPressed(new EventHandler<KeyEvent>() { 
    @Override 
    public void handle(KeyEvent e) { 
     if (e.getCode() == KeyCode.TAB) { 
      // TAB SPACES 
      StringBuilder sb = new StringBuilder(config.getTabSpacesCount()); 
      for (int i=0; i<config.getTabSpacesCount(); i++) { 
       sb.append(' '); 
      } 
      taInput.insertText(taInput.getCaretPosition(), sb.toString()); 
      e.consume(); 
     } 
    } 
}); 
+1

私はタブをスペースに置き換えることなく、同様の問題を解決しようとした... http://stackoverflow.com/questions/27585668/を見ますjavafx-textarea/tab-spacing-size-visualization-27595205#27595205 – Kolban

答えて

4

は最後に、私はこれを行う方法を発見しました。

setOnKeyPressed()メソッドは、keyPressアクションの実行後にイベントが処理されるため、このタスクには適していないようです。

addEventFilter()は、アクションが実行される前にイベントを処理するため、イベントを操作できます。

私の新しいコード:

taInput.addEventFilter(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() { 
    @Override 
    public void handle(KeyEvent e) { 
     if (e.getCode() == KeyCode.TAB) { 
      String s = StringUtils.repeat(' ', config.getTabSpacesCount()); 
      taInput.insertText(taInput.getCaretPosition(), s); 
      e.consume(); 
     } 
    } 
}); 
1

@tenotronあなたのコードはまた、修飾(シフト、コントロール、Alt、メタまたはショートカット)のセットでTABキーの組み合わせのために同じロジックを実行します。意味 テキストエリア

TABキー= Ctrl(修飾子)+ TAB = .... =あなたのロジックを押す。

textArea.addEventFilter(KeyEvent.KEY_PRESSED, 
       new EventHandler<KeyEvent>() { 
        final KeyCombination combo = new KeyCodeCombination(
          KeyCode.TAB); 
      @Override 
        public void handle(KeyEvent event) { 
          // check for only tab key 
         if (combo.match(event)) { 
          textArea.insertText(textArea.getCaretPosition(), 
            "I am not real TAB"); 
          event.consume(); 
       } 
      } 
     }); 

は今、TABキーの結果は、「私は実質TABないです」、CTRL + TABは、上の次のノードを強調表示します押す:この問題を修正するには

、あなたはKeyCombination

サンプルコードを使用する必要がありますシーン。

参考:

Correctly Checking KeyEvents

KeyCombination

+0

ありがとう、ありがとう。私は今この行動を必要としませんが、知っておくと良いです。 – ceklock

関連する問題