Java SwingX JXTreeTableCellRenderer弄乱了我的桌子
这是我的手机渲染器类Java SwingX JXTreeTableCellRenderer弄乱了我的桌子,java,swing,swingx,treetable,Java,Swing,Swingx,Treetable,这是我的手机渲染器类 public class MyCellRenderer extends DefaultTreeCellRenderer{ ImageIcon parentbill = new ImageIcon("images/parentbill.png"); ImageIcon childbill = new ImageIcon("images/childbill.png"); ImageIcon parentPurchase = new Imag
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设置图标,但是我想根据行的类型添加一些条件,所以我必须重写它 “描述”节点中存储了什么?渲染器正在为节点的文本使用value对象的toString方法。我正在存储字符串Purchase或Bill看起来您正在存储一个值数组,或者至少正在为给定的列返回一个数组。这很奇怪,我没有在描述中存储值数组。但是每一行本身都是一个值数组,所以也许DeNeer-DeNST知道把它放在哪里?考虑提供一个演示你的问题的方法。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将减少混乱和更好的响应