2012-05-22 43 views

回答

3

您應該使用TableColumn#setCellFactory()來自定義單元格項呈現。
例如,數據模型,像這樣Person class

// init code vs.. 
TableColumn firstNameCol = new TableColumn("First Name"); 
firstNameCol.setMinWidth(100); 
firstNameCol.setCellValueFactory(new PropertyValueFactory<Person, String>("firstName")); 
firstNameCol.setCellFactory(getCustomCellFactory("green")); 

TableColumn lastNameCol = new TableColumn("Last Name"); 
lastNameCol.setMinWidth(100); 
lastNameCol.setCellValueFactory(new PropertyValueFactory<Person, String>("lastName")); 
lastNameCol.setCellFactory(getCustomCellFactory("red")); 

table.setItems(data); 
table.getColumns().addAll(firstNameCol, lastNameCol); 

// scene create code vs.. 

和公共getCustomCellFactory()方法:

private Callback<TableColumn<Person, String>, TableCell<Person, String>> getCustomCellFactory(final String color) { 
     return new Callback<TableColumn<Person, String>, TableCell<Person, String>>() { 

      @Override 
      public TableCell<Person, String> call(TableColumn<Person, String> param) { 
       TableCell<Person, String> cell = new TableCell<Person, String>() { 

        @Override 
        public void updateItem(final String item, boolean empty) { 
         if (item != null) { 
          setText(item); 
          setStyle("-fx-text-fill: " + color + ";"); 
         } 
        } 
       }; 
       return cell; 
      } 
     }; 
    } 
+0

謝謝Uluk,那還是工作得很好:) – betaman

+0

,一個簡單的基於CSS的解決方案將是儘管如此,只需將一個ID字段添加到可用於設置樣式的TableColumn對象 – betaman

相關問題