Я написал код:
public class MousePosition extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
Pane pane = new Pane();
Text text = new Text();
Scene scene = new Scene(pane, 300, 100);
primaryStage.setScene(scene);
primaryStage.setTitle("Exercise 8");
primaryStage.show();
scene.setOnMouseReleased(e -> pane.getChildren().clear());
scene.setOnMouseClicked(e -> {
showCoordinates(pane, text, e);
});
scene.setOnMousePressed(e -> {
showCoordinates(pane, text, e);
});
}
private void showCoordinates(Pane pane, Text text, MouseEvent e) {
text.setText("(" + e.getX() + ", " + e.getY() + ")");
text.setX(e.getX());
text.setY(e.getY());
if (!pane.getChildren().contains(text))
pane.getChildren().add(text);
}
}
Он должен:
отображать положение мыши при нажатии кнопки мыши (см. Рис. 15.28a), а другой отображает положение мыши при нажатии кнопки мыши и перестает отображать ее при отпускании кнопки мыши.
Но моя лямбда не работает:
scene.setOnMouseReleased(e -> pane.getChildren().clear());
Это просто ничего не делает. Когда я изменил его на scene.setOnMouseReleased(e -> text.setText(""));
Это тоже ничего не делает. Но когда я использую scene.setOnMouseReleased(e -> System.out.println("0"));
, это работает.