0
異なるカラムタイプに適したカスタマイズされたテーブルセルを実装できますか?私はこれらのデータタイプを扱うことができるカスタマイズされたテーブルセルを定義することはできますか?これらすべての列のセルファクトリをこのカスタマイズされたテーブルセルに設定できます。私はテーブルビューJavafx
public class SimpleTextCell<S,T> extends TableCell<S ,T> {
private final Function<T,String> textExtractor ;
public SimpleTextCell(Function<T, String> textExtractor) {
this.textExtractor = textExtractor ;
}
public SimpleTextCell() {
this(T::toString);
}
@Override
protected void updateItem(T item, boolean empty) {
super.updateItem(item, empty);
setText(empty ? null : textExtractor.apply(item));
}
}
を(し、必要に応じて、あなたはupdateItem(...)
方法に多くの機能を追加することができます):
ありがとう@James_Dのようなものを行うことができますが、どのように私はのタイプを検出することができます実行時に2番目のパラメータを使用して、テーブルビューのすべての列に対してforループを作成し、それらに同じTableCell、TableColumn- someStringColumn = new TableColumn <>()を割り当てたいとします。 someStringColumn.setCellFactory(tc - >新しいSimpleTextCell
- ()); updateItemメソッド内でString DataTypeを使用していることを検出するにはどうすればよいですか –
ManKeer
タイプ消去のため、実行時にテーブル列のパラメータ化された型を動的にチェックすることはできません。あなたがここで何をしたいのかははっきりしていません。異なる表の列タイプに対して異なる動作が必要な場合は、本当に同じテーブル・セルの実装を全く使用していません。 (もちろん、 'updateItem()'メソッドの中で 'instanceof'テストを行うこともできますが、それはかなり醜いでしょう)。カラムを作成するときにおそらくテーブルのカラムの型を知っているので、それで? –
この点を明確にしていただきありがとうございます。 – ManKeer