JAVAFX:使用JFOENIX更改Stage窗口颜色

4

我一直在使用JFOENIX库来制作材料设计桌面应用程序,从JFOENIX演示中,我看到舞台窗口被改成了以下类似的图像:

enter image description here

我也想做同样的事情,但是我没有找到相关的主题。这里有人使用JFOENIX并且实现了我想要的吗?怎么做?


你找到解决方案了吗? - YoanGJ
2个回答

5

请查看此演示文稿。 您可以使用以下代码创建JFoenix修饰器:

import com.jfoenix.controls.JFXDecorator;

Parent root = something; // your root container

JFXDecorator decorator = new JFXDecorator(stage, root);
decorator.setCustomMaximize(true);
Scene scene = new Scene(decorator, 500, 500);

这将导致黑色装饰。查看这个css文件后,我认为您可以使用以下css代码更改颜色:
.jfx-decorator {
    -fx-decorator-color: blue;
}

.jfx-decorator .jfx-decorator-buttons-container {
    -fx-background-color: -fx-decorator-color;
}

.jfx-decorator .resize-border {
    -fx-border-color: -fx-decorator-color;
    -fx-border-width: 0 4 4 4;
}

很不幸,装饰器仍然是黑色的。我找不到任何额外的文档,所以我无法说您如何更改装饰器的颜色。希望我能帮到您。


你的答案帮助我改变了颜色。你是否添加了String uri = getClass().getResource(CSS_FILE_NAME).toExternalForm(); scene.getStylesheets().add(uri)? - Maksym
我可能把CSS文件添加到了错误的位置。不管怎样,毕竟知道CSS正在起作用是好的。 - M_F

3

我找不到直接更改jfx-decorator颜色的方法,所以我使用了以下代码,这对我有效!

在你的Java代码中:

Stage stage = new Stage();
Parent root = FXMLLoader.load(getClass().getResource("FXML_FILE"));
/*...*/
JFXDecorator decorator = new JFXDecorator(stage , root);
decorator.setCustomMaximize(true);                  
String uri = getClass().getResource("CSS_PATH").toExternalForm();
Scene scene = new Scene(decorator);
scene.getStylesheets().add(uri) ;
stage.setScene(scene);
stage.show();

在CSS文件内部,
.jfx-decorator {
    -fx-decorator-color: #272727;
}

.jfx-decorator .jfx-decorator-buttons-container {
    -fx-background-color: -fx-decorator-color;

}

.jfx-decorator .resize-border {
    -fx-border-color: -fx-decorator-color;
    -fx-border-width: 0 2 2 2;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接