2016-08-04 3 views
1

JavaFX (콘솔이 아닌)가있는 텍스트 필드가없는 사용자 입력 텍스트를 얻으려고하고 있지만 코드가 붙어 있습니다. 기본적으로 로그인 페이지에서 사용자가 USB의 버튼을 눌러 토큰 USB에서 자동으로 생성 된 임의의 OTP 문자열을 받게되며 폼이 활성화되어 있지 않으면 문자열이 자동으로 로그인 페이지와 함께 수신됩니다. 관련된 모든 텍스트 필드.텍스트 필드가없는 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); 
}} 

스캐너는 이클립스의 콘솔에서 입력을받을 것하고 로그인을 표시하지 않습니다 사실로이 코드는 잘못 내가 콘솔에 뭔가를 입력하고 Enter 버튼을 누를 때까지 페이지.

도움을 주시면 감사하겠습니다. 감사합니다

+1

내가 유일한 옵션은 https://docs.oracle.com/javase/8/javafx/api/javafx/scene ([onKeyPressed]을 듣고 생각하는 데 도움이 희망하는 모든, 매우 간단합니다 /Scene.html#setOnKeyPressed-javafx.event.EventHandler-) 문자를 하나씩 추적합니다. – 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을 추가하고 스테이지 UR USB 키보드에서 아무 키나 눌러 통지 첫 번째가 될 것입니다 방해하지 않기 때문에 코드가 작동하는 방법이다. 즉

그것이