我正在使用javafx,并且编写了一个绘制表视图的程序,列是名为Deck的类的字段。
其中一列显示Deck类的“ isValid”字段,该字段始终等于“ Valid”或“ inValid”。
我的目的是,如果“ isValid”字段等于“有效”,则行颜色变为绿色,如果等于“ InValid”,则该牌组的行颜色变为红色。
我为此表设置了一个.css文件,但我不知道如何更改此文件以达到我的目的,或者是否有其他解决方案可以在主代码中进行设置。
这是我的主要代码:
private void makeTable(){
TableView tableView = new TableView();
TableColumn<Deck,String> column1 = new TableColumn<>("DeckName");
column1.setCellValueFactory(new PropertyValueFactory<>("name"));
column1.setMinWidth(150);
TableColumn<Deck,String> column2 = new TableColumn<>("Validate");
column2.setCellValueFactory(new PropertyValueFactory<>("isValid"));
column2.setMinWidth(150);
tableView.getColumns().add(column1);
tableView.getColumns().add(column2);
tableView.setItems(getAllDecks());
// Create a new RowFactory to handle actions
tableView.setRowFactory(tv -> {
// Define our new TableRow
TableRow<Deck> row = new TableRow<>();
row.setOnMouseClicked(event -> {
DeckOperator.display(row.getItem().getName());
});
return row;
});
VBox vbox = new VBox(tableView);
Stage window = new Stage();
window.setTitle("AllDecks");
window.setScene(new Scene(vbox, 300, 300));
window.getScene().getStylesheets().add(getClass().getResource("Table.css").toExternalForm());
window.show();
}
/**
* @return all decks of logged in user
*/
private ObservableList<Deck> getAllDecks() {
for (int i = 0; i <Account.getLoginUser().getCollection().getDecks().size() ; i++) {
Account.getLoginUser().getCollection().getDecks().get(i).setIsValid();
}
return FXCollections.observableArrayList(Account.getLoginUser().getCollection().getDecks());
}