我试图用这样的
覆盖表行的前景色.table-row-cell:odd {
-fx-text-fill: blue;
-fx-background-color: lightblue;
}
.table-row-cell:even {
-fx-text-fill: red;
-fx-background-color: lightpink;
}
我看到,背景颜色有效,而前景没有:
示例代码如下:
**
* Checking how to override foreground color
*/
public class TableViewCSS2 extends Application {
private static String[][] names = new String[][]{
{"Julius", "Caesar"},
{"Wolfgang", "Mozart"},
{"William", "Shakespeare"},
{"Napoleon", "Bonaparte"},
{"Isaac", "Newton"},
{"Albert", "Einstein"},
{"Christopher", "Columbus"},
{"Johann", "Bach"},
{"Ludwig", "Beethoven"},
{"Gautama", "Buddha"},
{"Martin", "Luther"},
{"Galileo", "Galilei"},
{"Karl", "Marx"},
{"Marco", "Polo"},
{"Immanuel", "Kant"}
};
BorderPane root;
{
BorderPane ans = new BorderPane();
root = ans;
}
TableView<String[]> table;
{
TableView<String[]> ans = new TableView<String[]>();
root.setCenter(ans);
table = ans;
}
TableColumn<String[],String> firstNameCol;
{
TableColumn<String[],String> ans = new TableColumn<String[], String>("First Name");
ans.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<String[], String>, ObservableValue<String>>() {
public ObservableValue<String> call(final TableColumn.CellDataFeatures<String[], String> param) {
return new ObservableValueBase<String>() {
public String getValue() {
return param.getValue()[0];
}
};
}
});
table.getColumns().add(ans);
firstNameCol = ans;
}
TableColumn<String[],String> secondNameCol;
{
TableColumn<String[],String> ans = new TableColumn<String[], String>("Second Name");
ans.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<String[], String>, ObservableValue<String>>() {
public ObservableValue<String> call(final TableColumn.CellDataFeatures<String[], String> param) {
return new ObservableValueBase<String>() {
public String getValue() {
return param.getValue()[1];
}
};
}
});
table.getColumns().add(ans);
secondNameCol = ans;
}
private ObservableList<String[]> namesList;
{
ObservableList<String[]> ans = FXCollections.observableArrayList();
for(int i=0; i<names.length; ++i) {
ans.add( names[i] );
}
table.setItems(ans);
namesList = ans;
}
@Override
public void start(Stage primaryStage) throws Exception {
Scene scene = new Scene(root, 800, 600);
scene.getStylesheets().add("/sample2.css");
primaryStage.setTitle("TableViewCSS2");
primaryStage.setScene(scene);
primaryStage.show();
}
}
更新2
添加important!
没有帮助。
答案 0 :(得分:1)
您可以检查JvaFX本身定义的默认样式。另见:Default JavaFX-CSS 你会在那里找到很多例子
选择器有效并适用于字体颜色。看到文本不是红色,可能会应用更具体的CSS规则(并优先考虑)
答案 1 :(得分:1)
以下CSS工作:
.table-row-cell:odd {
-fx-background-color: lightblue;
}
.table-row-cell:odd > .table-cell{
-fx-text-fill: blue;
}
.table-row-cell:even {
-fx-background-color: lightpink;
}
.table-row-cell:even > .table-cell{
-fx-text-fill: red;
}