javafx在输入时更改不透明度

时间:2016-03-16 15:26:03

标签: javafx

我有一个不透明的primaryStage。当鼠标在窗口中内嵌时 - 不透明度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);
        }
    });

如果我在应用程序中键入文本字段而不是窗口上的鼠标,则场景设置不透明度为0.8。 如何在键入文本时设置不透明度? 请给我建议。

1 个答案:

答案 0 :(得分:0)

按下某个键时,可以使其变为不透明:

scene.addEventFilter(KeyEvent.KEY_PRESSED, e -> primaryStage.setOpacity(1));

如果您希望它在用户“停止”时恢复为半透明状态。打字,它有点棘手,因为你可以处理的是个人按键。如果在一段时间内未按任何键,则需要一个重置不透明度的计时器。 E.g:

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);
});