如何为 javafx 中的所有窗格添加相同的背景颜色?
how to add same background color for all pane in javafx?
我想为所有窗格和所有视图保持单一背景颜色(黑色)。我不想为每个视图写 css。我主要只使用 vbox 和 hbox。并且 table 的观看次数很少。有什么简单的方法可以写 css 一次并应用于所有人。提前谢谢你
您不会为每个视图都编写 css,而是为每个元素赋予相同的样式 class。
Pane pane = new Pane();
pane.getStyleClass().add("bg-black-style");
您需要将样式表添加到场景的某处
scene.getStylesheets().add("css-file.css");
并且在 css 文件中
.bg-black-style {
-fx-background-color: black;
}
这样一来,所有看起来应该相同的东西都在一个地方拥有了它的风格。
您可以只在 CSS class 中使用 .pane,它将适用于所有窗格。
.pane{
-fx-background-color: black;
}
同样适用于 .button 等
您可以像这样将样式 sheet 应用到整个应用程序:
package hacks;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ListView;
import javafx.scene.control.TextArea;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;
import java.net.URL;
/**
* Created by BDay on 7/10/17.<br>
* <br>
* CssStyle sets the style for the entire project
*/
public class CssStyle extends Application {
private String yourCss = "YourResource.css";
public CssStyle() {
try {
Application.setUserAgentStylesheet(getCss()); //null sets default style
} catch (NullPointerException ex) {
System.out.println(yourCss + " resource not found");
}
}
private Button button = new Button("Button Text");
private TextArea textArea = new TextArea("you text here");
private ObservableList<String> listItems = FXCollections.observableArrayList("one", "two", "three");
private ListView listView = new ListView<String>(listItems);
private FlowPane root = new FlowPane(button, textArea, listView);
private Scene scene = new Scene(root);
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setScene(scene);
primaryStage.show();
}
private String getCss() throws NullPointerException {
ClassLoader classLoader = getClass().getClassLoader();
URL resource = classLoader.getResource(yourCss);
String asString = resource.toExternalForm(); //throws null
return asString;
}
}
我想为所有窗格和所有视图保持单一背景颜色(黑色)。我不想为每个视图写 css。我主要只使用 vbox 和 hbox。并且 table 的观看次数很少。有什么简单的方法可以写 css 一次并应用于所有人。提前谢谢你
您不会为每个视图都编写 css,而是为每个元素赋予相同的样式 class。
Pane pane = new Pane();
pane.getStyleClass().add("bg-black-style");
您需要将样式表添加到场景的某处
scene.getStylesheets().add("css-file.css");
并且在 css 文件中
.bg-black-style {
-fx-background-color: black;
}
这样一来,所有看起来应该相同的东西都在一个地方拥有了它的风格。
您可以只在 CSS class 中使用 .pane,它将适用于所有窗格。
.pane{
-fx-background-color: black;
}
同样适用于 .button 等
您可以像这样将样式 sheet 应用到整个应用程序:
package hacks;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ListView;
import javafx.scene.control.TextArea;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;
import java.net.URL;
/**
* Created by BDay on 7/10/17.<br>
* <br>
* CssStyle sets the style for the entire project
*/
public class CssStyle extends Application {
private String yourCss = "YourResource.css";
public CssStyle() {
try {
Application.setUserAgentStylesheet(getCss()); //null sets default style
} catch (NullPointerException ex) {
System.out.println(yourCss + " resource not found");
}
}
private Button button = new Button("Button Text");
private TextArea textArea = new TextArea("you text here");
private ObservableList<String> listItems = FXCollections.observableArrayList("one", "two", "three");
private ListView listView = new ListView<String>(listItems);
private FlowPane root = new FlowPane(button, textArea, listView);
private Scene scene = new Scene(root);
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setScene(scene);
primaryStage.show();
}
private String getCss() throws NullPointerException {
ClassLoader classLoader = getClass().getClassLoader();
URL resource = classLoader.getResource(yourCss);
String asString = resource.toExternalForm(); //throws null
return asString;
}
}