javafx在键入时更改不透明度

javafx在键入时更改不透明度,javafx,Javafx,我有一个不透明的初级阶段。当鼠标插入窗口时-不透明度1。当鼠标从窗口退出时-0.8。 代码的一部分: scene.setOnMouseEntered(new EventHandler<javafx.scene.input.MouseEvent>() { @Override public void handle(javafx.scene.input.MouseEvent event) { primaryStage.setOpa

我有一个不透明的初级阶段。当鼠标插入窗口时-不透明度1。当鼠标从窗口退出时-0.8。 代码的一部分:

  scene.setOnMouseEntered(new EventHandler<javafx.scene.input.MouseEvent>() {
        @Override
        public void handle(javafx.scene.input.MouseEvent event) {
            primaryStage.setOpacity(1);
        }
    });

    scene.setOnMouseExited(new EventHandler<javafx.scene.input.MouseEvent>() {
        @Override
        public void handle(javafx.scene.input.MouseEvent event) {
            primaryStage.setOpacity(0.3);
        }
    });
scene.setonmouseintered(新的EventHandler(){
@凌驾
公共无效句柄(javafx.scene.input.MouseEvent事件){
初生期毛不透明度(1);
}
});
scene.setOnMouseExited(新的EventHandler(){
@凌驾
公共无效句柄(javafx.scene.input.MouseEvent事件){
初级阶段毛不透明度(0.3);
}
});
如果我在应用程序中键入文本字段,而不是在窗口上键入鼠标,则场景将不透明度设置为0.8。 键入文本时如何将不透明度设置为1?
请给我建议

按下按键时,可以使其不透明:

scene.addEventFilter(KeyEvent.KEY_PRESSED, e -> primaryStage.setOpacity(1));
如果您希望在用户“停止”键入时将其恢复为半透明,那么就有点麻烦了,因为您只能处理单个按键。如果在一段时间内没有按键,你需要一个定时器来重置不透明度。例如:

PauseTransition pause = new PauseTransition(Duration.seconds(1.0));
pause.setOnFinished(e -> primaryStage.setOpacity(0.8));

scene.addEventFilter(KeyEvent.KEY_PRESSED, e -> {
    pause.playFromStart();
    primaryStage.setOpacity(1);
});

詹姆斯,非常感谢!