Javafx TableView上的setRowFactory updateItem-style-fx字体重量:粗体无效

Javafx TableView上的setRowFactory updateItem-style-fx字体重量:粗体无效,javafx,Javafx,出于某种原因,当我想将一行加粗时,它不起作用。如果我试着在孩子们身上设置样式也是一样的。我认为这在过去是有效的。我使用的是最新的11.0.2版本 下面是我的测试代码。不过我可以用颜色。颜色有效,字体无效 谢谢 emailsTableView.setRowFactory(new Callback<TableView<EmailMessage>, TableRow<EmailMessage>>() { @Override public TableR

出于某种原因,当我想将一行加粗时,它不起作用。如果我试着在孩子们身上设置样式也是一样的。我认为这在过去是有效的。我使用的是最新的11.0.2版本

下面是我的测试代码。不过我可以用颜色。颜色有效,字体无效

谢谢

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方面的工作。课程代码在这里