使用这个手册(主题/表-树/表-trees.html),我试图为我的项目的Swing用户界面创建树表。
在表类的构造函数中,我重新定义了如下呈现:
public class JTreeTable extends JTable {
public JTreeTable(ITreeTableModel treeTableModel) {
super();
...
setDefaultRenderer(ITreeTableModel.class, tree);
...
}
}其中treeTableModel是我的实现
interface ITreeTableModel extends TreeModel在结果表中,我看起来很接近我想要的,但我有几个问题:

返回数>0
附注:我知道可能没有足够的资料可作直接答覆,但我至少须有方向才能继续进行调查。
发布于 2015-06-25 08:13:25
与第一个问题有关,您应该实现一个TreeCellRenderer。猜测你会做一些类似的事情:
//and override also all the other functions of TreeCellRenderer
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean selected, boolean expanded, boolean leaf, int row,
boolean hasFocus) {
Component returnValue = null;
if ((value != null) && (value instanceof DefaultMutableTreeNode)) {
Object userObject = ((DefaultMutableTreeNode) value)
.getUserObject();
if (userObject instanceof YourClass) {
YourClass yourElement = (YourClass) userObject;
if(col==0) titleLabel.setText(yourElement.getID());
if(col==1) titleLabel.setText(yourElement.getName());
if(col==2) titleLabel.setText(yourElement.getParentID());
if (selected) {
renderer.setBackground(backgroundSelectionColor);
} else {
renderer.setBackground(backgroundNonSelectionColor);
}
renderer.setEnabled(tree.isEnabled());
returnValue = renderer;
}
}
if (returnValue == null) {
returnValue = defaultRenderer.getTreeCellRendererComponent(tree,
value, selected, expanded, leaf, row, hasFocus);
}
return returnValue;
}
}当前发生的情况是您的Cell返回对象实例元素ID (例如DictionaryItem@11abb71),而不是获取对象并调用getID()函数。
您可以找到关于TreeCellRenderer例子。的额外示例和信息。
与您的第二个问题有关,请参见TreeModel实例上的示例。也许您也可以尝试通过代码展开行。如果"+“图标更改为"-”,这可能意味着getChildCount运行良好,但它不起作用的是getChild(int行),它将返回null或无效的树行元素。
https://stackoverflow.com/questions/30319107
复制相似问题