我正在使用 java8 中的 javafx 开发一个项目。我关注了一个奇怪的情况:一个面板(类 javafx.scene.layout.Pane)包含一个按钮(javafx.scene.control.Button)和另一个窗格。我希望鼠标单击事件会冒泡到父级。但这仅在我单击窗格时出现,并且在我单击按钮时不会发生。以下是具有此行为的一个非常简单的示例的代码。有没有人有解决这个问题的建议?我知道我可以基于窗格创建自己的按钮.. 但这只是一个讨厌的解决方法。干杯
package application;
import javafx.animation.TranslateTransition;
import javafx.application.Application;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.util.Duration;
public class Main extends Application {
double curScale;
@Override
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();
Scene scene = new Scene(root,400,400);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
Button btn = new Button("test");
btn.setLayoutX(50);
Pane p2 = new Pane();
p2.setPrefSize(20,20);
p2.setStyle("-fx-background-color: #440000");
Pane p = new Pane();
p.getChildren().add(btn);
p.getChildren().add(p2);
root.setTop(p);
p.setOnMouseClicked(new EventHandler<Event>() {
@Override
public void handle(Event event) {
System.out.println("event source " + event.getSource() + " target : " + event.getTarget());
}
});
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}