JavaFX - 为自定义控件加载样式表
JavaFX - Loading stylesheet for custom control
在 JavaFX 中,您可以使用类似这样的方式为场景加载样式表
scene.getStylesheets().addAll(getClass().getResource("/css/background.css").toExternalForm());
如果我创建自定义控件,如下所示,我可以加载该控件的样式表以在该控件内使用。而不是场景?
这是一个基本控件
public class EventListPane extends VBox {
@FXML
private ListView<Event> listView;
public EventListPane() {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/fxml/EventListPane.fxml"));
fxmlLoader.setController(this);
fxmlLoader.setRoot(this);
// Can i load the stylesheet for this control somewhere here??
try {
fxmlLoader.load();
} catch (Exception ex) {
Console.Log("Error loading eventListPane");
}
}
}
是的,你可以。在 How to add a CSS stylesheet in FXML 中查看我的 post,尤其是 toolbar.css,在我的例子中,它是通过 fxml 加载的。
在有人再次抱怨我不应该引用内容之前:你真的要我多次 copy/paste 我的解决方案吗?我想我已经 post 在这里编辑了 4 次引用的评论……这总是一个不同的问题(样式表图像未加载,图像在 devenv 中加载但不在 jar 中,等等),所以不是重复的,但是同样的解决方案。
在 JavaFX 中,您可以使用类似这样的方式为场景加载样式表
scene.getStylesheets().addAll(getClass().getResource("/css/background.css").toExternalForm());
如果我创建自定义控件,如下所示,我可以加载该控件的样式表以在该控件内使用。而不是场景?
这是一个基本控件
public class EventListPane extends VBox {
@FXML
private ListView<Event> listView;
public EventListPane() {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/fxml/EventListPane.fxml"));
fxmlLoader.setController(this);
fxmlLoader.setRoot(this);
// Can i load the stylesheet for this control somewhere here??
try {
fxmlLoader.load();
} catch (Exception ex) {
Console.Log("Error loading eventListPane");
}
}
}
是的,你可以。在 How to add a CSS stylesheet in FXML 中查看我的 post,尤其是 toolbar.css,在我的例子中,它是通过 fxml 加载的。
在有人再次抱怨我不应该引用内容之前:你真的要我多次 copy/paste 我的解决方案吗?我想我已经 post 在这里编辑了 4 次引用的评论……这总是一个不同的问题(样式表图像未加载,图像在 devenv 中加载但不在 jar 中,等等),所以不是重复的,但是同样的解决方案。