JXTreeTable
fromを使用しorg.jdesktop.swingx
て階層構造データを表示しているため、いくつかの親ノードといくつかの子ノードがそれらに接続されています。私が望むのはrenderer
、親ノードと子ノードで異なることです。
例: JXTreeTable が親ノードを表示する場合、最初の列を文字列としてレンダリングし、他の列を JCheckBox でレンダリングする必要があります。それ以外の場合、JXTreeTable が子ノードを表示する場合、すべてのセルを文字列としてレンダリングする必要があります。
AbstractTreeTableModel
まず、このコードを拡張する myTreeTableModel を記述します。
@Override
public Class<?> getColumnClass(int column) {
if (column == 0)
return String.class;
return Boolean.class;
}
親ノードではすべて問題ありませんが、空のセルが必要な子ノードでも空の JCheckBox が表示されます。null
メソッドに戻っgetValueAt(....)
ても問題は解決しません。そこで、Renderer クラスを使用することを考えましたが、どこから始めればよいかわかりません。次のような疑似レンダラーを作成します。
private class CustomCellRender implements TableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column) {
setOpaque(true);
JComponent component = null;
if (value instanceof Parent_Node) {
if (column == 0)
component = new JLabel();
else
component = new JCheckBox();
} else if (value instanceof Child_Node) {
component = new JLabel();
}
return component;
}
}
そして私はこれを次のように設定しました:
myTreeTable.setDefaultRenderer(Object.class, new CustomCellRender());
どこが間違っているか、この問題を解決するためのヒントを教えてもらえますか? お時間をいただきありがとうございます。
編集:System.out.println(...)
メソッドにテストを挿入しようとしましたgetTableCellRendererComponent
が、呼び出されません。したがって、JTreeTable はこのメソッドを実行しません。