前景色和其他的JavaFX CSS属性?

时间:2016-05-13 05:41:50

标签: css javafx

我试图用这样的

覆盖表行的前景色
.table-row-cell:odd {
    -fx-text-fill: blue;
    -fx-background-color: lightblue;
}

.table-row-cell:even {
    -fx-text-fill: red;
    -fx-background-color: lightpink;
}

我看到,背景颜色有效,而前景没有:

enter image description here

示例代码如下:

**
 * 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!没有帮助。

2 个答案:

答案 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;
}