【发布时间】:2020-04-15 14:02:35
【问题描述】:
我写了一段代码:
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),另一个显示鼠标位置 鼠标按钮被按下并在鼠标按钮时停止显示 被释放了。
但我的 lambda 不起作用:
scene.setOnMouseReleased(e -> pane.getChildren().clear());
它什么也不做。
当我将其更改为 scene.setOnMouseReleased(e -> text.setText("")); 时,它也没有任何作用。但是当我使用scene.setOnMouseReleased(e -> System.out.println("0")); 时,它可以工作。
【问题讨论】:
-
请包含整个程序。这是最小的,但它需要包含和 main() 以便我们可以看到它是如何被调用的,并使用调试器自己编译它。你让我们很难帮助到我们。
-
仔细阅读图15.28a ..周围的文字