6

我正在构建一个treetableusingJXTreeTabble并且我想menu根据所选值禁用/启用项目。所以,我试图把这段代码放在我的table model

public Object getValueAt(int index) {
        if (index >= 0 && index < root.getSize()){
            return root.get(index);
        }

        return null;

    }

问题

以上仅适用于table未扩展的内容。因为 的index可能selected row大于sizet able model(模型可以有两个项目,当所有内容都展开时,行可以有 10 个)。此外,the object typeof the 与 theparent不同children(想想一本有章节的书作为它的孩子)。

作为正确执行上述操作的方法,您有什么建议?

4

3 回答 3

7

假设index是您的行号,请尝试以下操作来获取节点对象:

TreePath path = treetable.getPathForRow(index);
Object node = path.getLastPathComponent();

wheretreetable将是指向使用此表模型的表的指针。

于 2013-04-29T16:34:12.853 回答
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();

结果你会从对象中得到一个类,你可以解析对象来获取值

于 2013-05-14T11:55:21.303 回答
0

视图和模型中的索引可能不同。您必须先使用调整所选行的索引convertRowIndextToModel()

于 2011-11-01T07:35:49.740 回答