要解决这个问题,你可以为内部的StackPane设置一个背景颜色,以便它能够接收鼠标事件。下面是一个示例代码:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
StackPane outerStackPane = new StackPane();
VBox vBox = new VBox();
Button button = new Button("点击我");
vBox.getChildren().add(button);
StackPane innerStackPane = new StackPane();
innerStackPane.getChildren().add(vBox);
innerStackPane.setStyle("-fx-background-color: transparent;"); // 设置为透明
outerStackPane.getChildren().add(innerStackPane);
Scene scene = new Scene(outerStackPane, 300, 200);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
在这个示例中,我们为内部的StackPane设置了透明的背景颜色。这样,外部的StackPane就能接收到鼠标事件了,按钮可以正常工作。