我在这里尝试的是在透明舞台中的StackPane
中创建一个不透明按钮,但使舞台透明将使所有内容透明。
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.*;
public class HelloWorld extends Application {
@Override
public void start(Stage primaryStage) {
Button btn = new Button();
btn.setText("Say 'Hello World'");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});
StackPane root = new StackPane();
root.getChildren().add(btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.initStyle(StageStyle.TRANSPARENT);
primaryStage.setOpacity(0.4);
primaryStage.setScene(scene);
primaryStage.show();
scene.getStylesheets().add("sample.css");
}
public static void main(String[] args) {
launch(args);
}
}
sample.css文件包含
.button {
-fx-background-color: rgba(255,0,0,1);
}
答案 0 :(得分:0)
这样做
btn.setStyle("-fx-background-color: any-non-transparent-color-you-wish;");
这会改变按钮的背景,使其不透明
答案 1 :(得分:-1)
刚刚找到了答案。我所要做的就是在场景中将填充颜色更改为null并更改css文件。
scene.setFill(null);
css文件
.root {
-fx-background-color: rgba(0,0,0,0.1);
}
.button {
-fx-background-color: rgba(255,0,0,1);
}