私のツリーテーブルビューには、子アイテムを持つ子アイテム(誤ってルートアイテムと呼んでいます)を含むルートアイテムがあります。誤ってルート項目と呼ばれる行のテキストの外観をカスタマイズする必要があります。そのようなセレクターはありますか、それとも他にどのように行われますか?
ありがとう。
私のツリーテーブルビューには、子アイテムを持つ子アイテム(誤ってルートアイテムと呼んでいます)を含むルートアイテムがあります。誤ってルート項目と呼ばれる行のテキストの外観をカスタマイズする必要があります。そのようなセレクターはありますか、それとも他にどのように行われますか?
ありがとう。
これにより、ルートを含む行に疑似クラスが設定されます。
final PseudoClass firstRowClass = PseudoClass.getPseudoClass("first-row");
treeTableView.setRowFactory(treeTable -> {
TreeTableRow<...> row = new TreeTableRow<>();
row.treeItemProperty().addListener((ov, oldTreeItem, newTreeItem) ->
row.pseudoClassStateChanged(firstRowClass, newTreeItem == treeTable.getRoot()));
return row ;
});
これで、css でその行を選択できます
.tree-table-row-cell:first-row { ... }
完全な例はこちら
ルート ノードの直接の子ノードのスタイルを設定したいようです。この場合、ちょうど
row.treeItemProperty().addListener((ov, oldTreeItem, newTreeItem) ->
row.pseudoClassStateChanged(firstRowClass,
newTreeItem != null && newTreeItem.getParent() == treeTable.getRoot()));
上記のコードの条件の代わりに。明らかに、必要に応じて他の基準を使用できます (例: ! newTreeItem.isLeaf()
)。
のデフォルトのスタイル シート ルールtree-table-row
は少し変わっていることに注意してください。-fx-background-color
は行に対して設定されますが-fx-text-fill
、行とその中のセルの両方に対して設定されます。背景色を変更したい場合は、
-tree-table-row-cell:first-row {
-fx-background-color: antiquewhite ;
}
ただし、テキストの色を変更する場合は、セルで変更する必要があります。
-tree-table-row-cell:first-row .tree-table-cell {
-fx-text-fill: red ;
}