我希望透明的progressindicator,这是无限期的。
这里是代码,它显示灰色背景状态/场景。 我希望完全透明。
我尝试了以下代码,但它显示了不透明的后台阶段。
package application;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.ProgressIndicator;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
public class Main extends Application {
@Override
public void start(Stage stage) {
/*
*
* my css file content:
*
* .progress-indicator .indicator { -fx-background-color: transparent;
* -fx-background-insets: 0; -fx-background-radius: 0;
*
* } .progress-indicator { -fx-progress-color: green ; }
*
*
*
*/
Stage initStage = new Stage();
initStage.initStyle(StageStyle.TRANSPARENT);
ProgressIndicator loadProgress = new ProgressIndicator();
loadProgress.setSkin(null);
loadProgress.setPrefWidth(50);
VBox box = new VBox();
box.getChildren().add(loadProgress);
final Scene scene = new Scene(box, 150, 150);
scene.setFill(Color.TRANSPARENT);
initStage.setScene(scene);
scene.getStylesheets().add("application.css");
initStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
答案 0 :(得分:19)
对于modena.css
(Java 8中的默认JavaFX外观定义),为所有控件(以及加载控件时的窗格)引入了轻微的阴影背景。
您可以通过指定默认背景是透明的来删除它。这可以通过在应用程序的CSS文件中添加以下行来完成:
.root { -fx-background-color: transparent; }
这是您在代码中已有的其他设置,以初始化舞台的样式和场景的背景填充。
stage.initStyle(StageStyle.TRANSPARENT);
scene.setFill(Color.TRANSPARENT);
注意:在问题的示例代码中,创建了一个附加阶段(initStage),而不是使用start方法的传入阶段。传入的阶段可以通过代码直接初始化,使用和显示,而不是创建额外的initStage。
答案 1 :(得分:3)
stage.initStyle(StageStyle.TRANSPARENT);
这是隐藏顶部栏(最小化,恢复和关闭)
scene.setFill(Color.TRANSPARENT);
这是用于框架颜色(你可以用任何颜色的GREEN YELLOW RED BLUE替换TRANSPARENT ......)
但对我来说,如果你能理解我,我想要玻璃观察,
和不同的颜色
所以解决方案是
primaryStage.setOpacity(0.2);
数字0.2介于0和1之间
0隐藏,1是正常形式,但数字之间透明
所以选择你的号码并运行你的程序,看看这是否是你想要的
这个代码是全屏的
primaryStage.setFullScreen(true);<br>
并在css文件中执行此操作
.root { -fx-background-color:rgba(0,0,0,1); }<br>
你可以改变颜色,改变rgba(0,0,0,1)
中的数字答案 2 :(得分:1)
这对我有用。
Parent root = FXMLLoader.load(getClass().getResource("login.fxml"));
Scene scene = new Scene(root);
scene.setFill(Color.TRANSPARENT);
stage.setScene(scene);
stage.initStyle(StageStyle.TRANSPARENT);
stage.show();
U仅需要两件事:
scene.setFill(Color.TRANSPARENT);
stage.initStyle(StageStyle.TRANSPARENT);