私は3レベルのTreeTableIViewを持っています。他のすべてのセルは空のままですが、リーフだけにチェックボックスを表示したいと思います。これまでのところ、私は2列を作成しました:JavaFXのLeafs of TreeTableViewのチェックボックスのみ
最初の列は階層を保持している:
TreeTableColumn<AttributeRow, String> attributeColumn = new TreeTableColumn<>("Attributes");
attributeColumn.setPrefWidth(200);
attributeColumn.setCellValueFactory(
(TreeTableColumn.CellDataFeatures<AttributeRow, String> param) ->
new ReadOnlyStringWrapper(param.getValue().getValue().getAttributeName())
);
二列だけ葉のチェックボックスを含まなければならない:
TreeTableColumn<AttributeRow, Boolean> companyColumn = new TreeTableColumn<>(companyGroup);
companyColumn.setPrefWidth(200);
companyColumn.setCellFactory(CheckBoxTreeTableCell.forTreeTableColumn(companyColumn));
companyColumn.setCellValueFactory(param -> {
if (param.getValue().getValue().getCompanyGroups() == null) {
return new SimpleBooleanProperty(true);
} else {
return new SimpleBooleanProperty(false);
}
});
これは私が何をしたいです達成するために:
があります他のセルは空ですが、リーフのチェックボックスのみを表示する方法はありますか?ありがとう!それが含まれている項目が葉かではなく、leaf
疑似クラスを追加または削除する場合
お返事ありがとうございます。私はあなたのソリューションを実装し、それは部分的に動作します。ただし、1つのチェックボックスをクリックすると、上記のチェックボックスが突然表示されたまま消えます。だからここには奇妙な動きがあります。 – user41854
@ user41854正確な問題を再現できませんでしたが、最も関連性の高いものが見つかりました:何らかの理由で、 'TreeTableView'は、セルが再び表示されるとセルの可視性を' true'に設定してCSSスタイルをオーバーライドし、これは、細胞を再び見るためにスクロールした後、それらが可視になることを意味する。回避策を追加しました(セルの下地をセル自体の代わりに見えなくする)。現在のバージョンはjava 8u92以降で動作するはずです。 – fabian