2016-08-04 9 views
1

JavaFX(コンソールではない)のテキストフィールドを使用せずにユーザー入力テキストを取得しようとしていますが、コードが残っています。基本的に私がしたいのは、ログインページのユーザーが、トークンUSBから自動的に生成されたOTPのランダムな文字列をUSBのボタンを押すと受信し、フォームがアクティブでないときに文字列がログインページで自動的に受信されることです関連するテキストフィールド。JavaFXがテキストフィールドなしのユーザー入力テキストを待機しています

私が今まで来ることができプレゼンターのためのコードは次のようなものです:

public class LoginBoxPresenterFinal implements Initializable { 

... 
    public void initialize(URL arg0, ResourceBundle arg1) { 
    .... 
     Scanner reader = new Scanner(System.in); 
     String otp = reader.nextLine(); 
     System.out.println(otp); 
}} 

スキャナのみEclipseのコンソールで入力を受け取ることになりますし、それはログインが表示されません実際には、このコードが間違っています私が何かをコンソールに入力してEnterボタンを押すまで、ページを開きます。

何か助けていただければ幸いです。ありがとう。

+1

お役に立てば幸いです/Scene.html#setOnKeyPressed-javafx.event.EventHandler-)、文字を1つずつ追跡します。 – Itai

+0

@sillyfly問題は、この入力がどのユーザーの入力からではなく、このトークンUSBによって自動的に生成されることです。また、ユーザー名用の別のテキストフィールドがある場合はonKeyPressedを使用する場合もキャプチャされます。 –

+0

おそらくUSBトークンはキーボードのように動作し、キーを押すと送信されます。それが異なって動作する場合は、実際にどのように実際に動作するかについての詳細情報を含める必要があります。 – Itai

答えて

2

私はあなたをお手伝いできます。

Stage s = new Stage(StageStyle.DECORATED);//suppose this is your stage 
    s.initModality(Modality.APPLICATION_MODAL); 
    p = new Pane(); 
    p.setStyle("-fx-background-color: yellow"); 
    s.setScene(new Scene(p,150,150)); 
    s.show(); 
    s.addEventFilter(KeyEvent.KEY_RELEASED, new EventHandler<KeyEvent>() { 
     @Override 
     public void handle(KeyEvent t) { 
      if(t.getCode().equals(KeyCode.ENTER)){ 
       //this is when the user clicks enter meaning he is done or something 
       //like that 
      }else{ 
       //here the code detect keycodes other than enter to get them 
       KeyCode kc = t.getCode(); 
       //now store kc somewhere and use it. 
      } 
      t.consume();//the consume here is because i do not want 
      //the TextField to hear about the keypressed. 
      //remove it if you want it to be notified 
     } 
    }); 

これは、あなたがTextFieldがあなたのStageにeventfliterを追加し、ステージはウルUSBキーボードで任意のキーを押しを通知することが初めてとなる コールを中断したくないので、コードがどのように動作するかです。それがすべてで、非常に簡単

は、私はあなたの唯一のオプションは、[onKeyPressed](https://docs.oracle.com/javase/8/javafx/api/javafx/sceneに耳を傾けることだと思う、それは

関連する問題