2016-05-13 42 views
0

我試圖覆蓋前景色錶行像這樣的東西前景色和其他JavaFX CSS屬性?

.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(); 
    } 




} 

UPDATE 2

添加important!沒有幫助。

+2

什麼你指的是由前景色?如果您的意思是文字顏色,請使用'-fx-text-fill'。您還可以檢查[CSS參考](http://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html#labeled) – hotzst

+2

'.table-cell {-fx- text-fill:red;}'試試這個! – Rhain

+0

@Rhain搞定了! – Dims

回答

1

而且您可以檢查由JvaFX自己定義的默認樣式。另請參閱:Default JavaFX-CSS 您可以在其中找到大量示例

選擇器有效並適用於字體顏色。看到作爲文本不紅,這可能是一個更具體的CSS規則適用(和優先級)

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