0

これが私のセルレンダラークラスです

    public class MyCellRenderer extends DefaultTreeCellRenderer{

    ImageIcon parentbill = new ImageIcon("images/parentbill.png");

    ImageIcon childbill = new ImageIcon("images/childbill.png");

    ImageIcon parentPurchase = new ImageIcon("images/parentexpense.png");

    ImageIcon childPurchase = new ImageIcon("images/childexpense.png");

    public MyCellRenderer(TreeTableController contr){
        super();
    }
    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
            Component c = super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
           if(leaf){

                setIcon(childPurchase);
                //((DefaultTreeCellRenderer) c).setClosedIcon(parentPurchase);
            }else{
                setIcon(parentPurchase);    
            }

            if(expanded){
                setIcon(parentPurchase);
            }

            return c;
        }
}

そして、私がそれを追加する方法があります:

    TableModel tableModel = new TableModel(root);
    JXTreeTable treeTable = new JXTreeTable(tableModel);
    treeController = new TreeTableController(tableModel, treeTable);

    MyCellRenderer cellRenderer = new MyCellRenderer(treeController);
    treeController.getTable().setTreeCellRenderer(cellRenderer);

したがって、私のレンダラーは、テーブル内のさまざまな種類の行のアイコンを変更することになっています。そして、彼はそれをします(すごい!)。しかし、彼はテーブルが最初にどのように見えるべきかを混乱させ、次のように最初のセルに Java ガベージを置きます: 最初のセルに購入という単語があるはずですが、クリックしたときにのみ表示されます どうすれば修正できますか? レンダラーなしで JXTreeTable からアイコンを設定する方法があるのは知っていますが、行の種類に応じていくつかの条件を追加したいのでオーバーライドする必要があります。

4

0 に答える 0