Как слушать, когда мое приложение теряет фокус? - PullRequest
0 голосов
/ 23 января 2019

Мне нужно вызвать событие, когда окно приложения теряет фокус.Как мне настроить слушателя в окне для этого?

1 Ответ

0 голосов
/ 23 января 2019

Как показывают приведенные выше комментарии, просто прослушивание focusedProperty вашей сцены является правильным способом сделать это.

Обратитесь к простому примеру приложения ниже, чтобы увидеть, как оно работает:

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class WindowFocusExample extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {

        // Simple interface
        VBox root = new VBox(5);
        root.setPadding(new Insets(10));
        root.setAlignment(Pos.CENTER);

        // A label to show our current focus status
        Label label = new Label("Window has focus.");

        // Let's listen for our window to get/lose focus
        primaryStage.focusedProperty().addListener((observable, oldValue, newValue) -> {
            if (newValue) {
                label.setText("Window HAS focus.");
            } else {
                label.setText("Window has LOST focus!");
            }

            System.out.println(label.getText());
        });

        root.getChildren().add(label);

        // Show the Stage
        primaryStage.setWidth(300);
        primaryStage.setHeight(300);
        primaryStage.setScene(new Scene(root));
        primaryStage.show();
    }
}
...