2017-03-13 13 views
1

私はコンソールアプリケーションを作成しています。私は、タブを押すとコマンドを自動補完したいと思います。問題は、javaFXのタブを押すとアプリケーションの別の要素にフォーカスが切り替わることです。これを無効にする方法はありますか?JavaFX無効なタブナビゲーション

+1

http://stackoverflow.com/a/16657680/259889 – Sid

+0

の可能な複製@Rebornあなたがリンクしている質問の正反対を尋ねるこの質問はありませんか? –

+0

@James_D Ops。申し訳ありませんが、私の悪い – Reborn

答えて

3

は、イベント・フィルタを追加し、イベント消費:

import javafx.application.Application; 
import javafx.geometry.Insets; 
import javafx.geometry.Pos; 
import javafx.scene.Scene; 
import javafx.scene.control.TextField; 
import javafx.scene.input.KeyCode; 
import javafx.scene.input.KeyEvent; 
import javafx.scene.layout.VBox; 
import javafx.stage.Stage; 

public class DisableFocusNavigation extends Application { 

    private TextField createTextField() { 
     TextField textField = new TextField(); 
     textField.addEventFilter(KeyEvent.KEY_PRESSED, event -> { 
      if (event.getCode() == KeyCode.TAB) { 
       System.out.println("Tab pressed"); 
       event.consume(); 
      } 
     }); 
     return textField ; 
    } 

    @Override 
    public void start(Stage primaryStage) { 
     TextField tf1 = createTextField(); 
     TextField tf2 = createTextField(); 

     VBox root = new VBox(5, tf1, tf2); 
     root.setAlignment(Pos.CENTER); 
     root.setPadding(new Insets(20)); 

     primaryStage.setScene(new Scene(root)); 
     primaryStage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 

注それは不可能マウス(または類似の入力装置)なしでアプリケーションを使用することを可能にするように、これは、特にお勧めではないことを。少なくとも、イベントフィルタの修飾キーを確認し、フォーカストラバーサルオプションを許可する必要があります。

関連する問題