我在麻煩......我有一個JavaFX Tableview tha cointain,在一列中,有些結果。這些結果可以是「OK」,「N/A」和「KO」,如果我有一個「OK」,我用綠色畫它,如果我有一個「N/A」 KO「我把它塗成紅色(全部用方法setStyle())。問題是,當我垂直滑動表格時,文本的顏色隨機變化,我的紅色「OK」或綠色的「KO」...我想我應該使用類似repaint()但JavaFX沒有它,那我該怎麼辦?關於結果的代碼:JavaFX:如何「重繪」一個tableview
for (ResultMatch result : events) {
isMatch = (result.match().equals("OK") || result.match().equals("N/A"));
//Set the style
reader.getSampleController().xmlMatch.setCellFactory(new Callback<TableColumn<String, String>, TableCell<String, String>>() {
@Override
public TableCell call(TableColumn p) {
return new TableCell<String, String>() {
@Override
public void updateItem(final String item, final boolean empty) {
super.updateItem(item, empty);
if (item != null) {
setText(item);
setAlignment(Pos.CENTER);
switch (item) {
case "OK":
getStyleClass().remove("koItem");
getStyleClass().remove("naItem");
getStyleClass().add("okItem");
break;
case "N/A":
getStyleClass().remove("okItem");
getStyleClass().remove("koItem");
getStyleClass().add("naItem");
break;
case "KO":
getStyleClass().remove("okItem");
getStyleClass().remove("naItem");
getStyleClass().add("koItem");
break;
default:
setStyle("");
break;
}
} else {
setText(null);
}
}
};
}
});
isPass = isPass && isMatch;
reader.getSampleController().getViewXML().getItems().add(result);
}
這是http://stackoverflow.com/questions/11065140/javafx-2-1-tableview-refresh-items的副本,但解決方案張貼在這個問題做了不適合我,所以我認爲這個問題應該更新或應該回答。 – Cobbles
我已經四處尋找一些答案,但我無法在這裏找到解決方案,所以我決定發佈這個問題:)希望它可以幫助... – Peppalvino
也許你的默認應該刪除所有樣式類而不是setStyle(「」 ) – brian