我的窗格上有一些元素。我的程序有时会添加Elements,也应该删除它们。但是,当我尝试删除元素时,它们只是停留在那里。我已经尝试记录这种情况,并且在我调用此方法时程序始终返回true。
public void removeAddedElements() {
for (Node addedElement : addedElements) {
if (parent.getChildren().contains(addedElement)) {
parent.getChildren().remove(addedElement); //this returns true
}
}
我已经写了一个代码公共类MousePosition扩展了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"));
时,它可以工作。