Javafx TableView上的setRowFactory updateItem-style-fx字体重量:粗体无效
出于某种原因,当我想将一行加粗时,它不起作用。如果我试着在孩子们身上设置样式也是一样的。我认为这在过去是有效的。我使用的是最新的11.0.2版本 下面是我的测试代码。不过我可以用颜色。颜色有效,字体无效 谢谢Javafx TableView上的setRowFactory updateItem-style-fx字体重量:粗体无效,javafx,Javafx,出于某种原因,当我想将一行加粗时,它不起作用。如果我试着在孩子们身上设置样式也是一样的。我认为这在过去是有效的。我使用的是最新的11.0.2版本 下面是我的测试代码。不过我可以用颜色。颜色有效,字体无效 谢谢 emailsTableView.setRowFactory(new Callback<TableView<EmailMessage>, TableRow<EmailMessage>>() { @Override public TableR
emailsTableView.setRowFactory(new Callback<TableView<EmailMessage>, TableRow<EmailMessage>>() {
@Override
public TableRow<EmailMessage> call(TableView<EmailMessage> param) {
return new TableRow<>() {
@Override
protected void updateItem(EmailMessage item, boolean empty) {
super.updateItem(item, empty);
if (item != null) {
if (item.isRead()) {
setStyle("");
} else {
//setStyle("-fx-font-weight: bold");
//setStyle("fx-font-style: italic");
//setStyle("-fx-background-color: purple");
for (int i=0; i < getChildren().size(); i++) {
getChildren().get(i).setStyle("-fx-font-weight: bold");
//getChildren().get(i).setStyle("-fx-background-color: purple");
}
}
System.out.println("setupBoldRows " + item + " style: " + getStyle());
}
}
};
}
}
我无法告诉您问题的确切原因,因为我没有在JavaFX11环境中工作。但我希望您尝试一下css样式表,看看它是否有效 在css文件中:
.table-row-cell:unread{
-fx-font-weight:bold;
}
代码:
// Create a unread pseudo state for row.
final PseudoClass unreadPseudoState = PseudoClass.getPseudoClass("unread");
emailsTableView.setRowFactory(new Callback<TableView<EmailMessage>, TableRow<EmailMessage>>() {
@Override
public TableRow<EmailMessage> call(TableView<EmailMessage> param) {
return new TableRow<>() {
@Override
protected void updateItem(EmailMessage item, boolean empty) {
super.updateItem(item, empty);
if (item != null) {
// Update the pseudo state of the row to pick the styling from styleSheet
this.pseudoClassStateChanged(unreadPseudoState, !item.isRead());
}
}
};
}
});
我认为这是Mac的问题。我复制了这个项目,回到了Java8,但它在那里不起作用。我去了github课程,得到了最终的代码,但它在那里也不起作用。课程作者当时正在从事Linux方面的工作。课程代码在这里