JavaFX等待用户输入的文本没有任何文本字段

时间:2016-08-04 11:55:37

标签: java javafx

我正在尝试获取用户输入的文本而没有任何带有JavaFX的文本字段(不是使用控制台),但我仍然坚持使用代码。基本上我想要做的是在登录页面期间,用户将通过按下USB中的按钮接收从令牌USB自动生成的随机字符串OTP,并且当表单处于活动状态时,将通过登录页面自动接收字符串涉及的任何文本领域。

我现在可以提出的演示者代码是这样的:

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 个答案:

答案 0 :(得分: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键盘通知任何按键的通知。这就是全部,非常容易

希望有所帮助