从JXTreeTable中获取选定的值

时间:2011-11-01 06:45:30

标签: java object selected tablemodel jxtreetable

我正在使用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不同(想想一本带有章节的书,就像孩子一样)。

您建议如何正确执行上述操作?

3 个答案:

答案 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()

调整所选行的索引