我正在使用treetable
构建JXTreeTabble
,我想根据所选值禁用/ menu
个项目。所以,我尝试将此代码放在我的table model
:
public Object getValueAt(int index) {
if (index >= 0 && index < root.getSize()){
return root.get(index);
}
return null;
}
问题
以上仅适用于table
的内容未展开的情况。因为index
的{{1}}可能大于t selected row
的{{1}}(模型可以有两个项目,当所有内容都展开时,行可以有10个)。此外,size
的{{1}}与able model
不同(想想一本带有章节的书,就像孩子一样)。
您建议如何正确执行上述操作?
答案 0 :(得分:7)
假设index
是您的行号,请尝试以下方法来获取节点对象:
TreePath path = treetable.getPathForRow(index);
Object node = path.getLastPathComponent();
其中treetable
将是使用此表模型指向表的指针。
答案 1 :(得分:1)
在JXTreeTable中,您可以根据treeTable中的row和nodeClass访问值。 例如:
int row=treeTable.getSelectedRow();
//get value from column
Object object= treeTable.getValueAt(row, yourColumn);
TreePath path= treeTable.getPathForRow(row);
Object o= path.getLastPathComponent();
Class<? extends Object> entity=o.getClass();
您将从对象获取一个Class的结果,您可以解析该对象以获取值
答案 2 :(得分:0)
视图和模型中的索引可能不同。您必须先使用convertRowIndextToModel()