我正在尝试获取用户输入的文本而没有任何带有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按钮之前它不会显示登录页面。
感谢任何帮助。感谢
答案 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键盘通知任何按键的通知。这就是全部,非常容易
希望有所帮助