3

我正在使用Outlinenetbeans 来显示一些结构化数据。

如何将选定的行映射到树中的对象?

4

1 回答 1

6

您可以查看今天宣布新的 Swing Tree Table中的示例。看起来作者正在创建数据模型,因此响应节点选择应该会有所帮助。我org.netbeans.swing.outline.Outline在 NetBeans 6.8 中找到了这个类:

NetBeans/platform11/modules/org-netbeans-swing-outline.jar

附加物:

请注意,它Outline来自JTable,因此如何使用表格:用户选​​择可能会有所帮助。基于上面引用的示例,这里有一个监听器,它显示了随着节点展开和折叠以及选择保持不变时行数的明显变化:

outline.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
    @Override
    public void valueChanged(ListSelectionEvent e) {
        int row = outline.getSelectedRow();
        File f = (File) outline.getValueAt(row, 0);
        if (!e.getValueIsAdjusting()) {
            System.out.println(row + ": " + f);
        }
    }
});

虽然是临时性的,但您可能会查看OutlineModeland DefaultOutlineModel。前者同时实现TreeModelandTableModel和 offer TreePathSupport;后者提到了“TableModelEvent 和 TreeModelEvent 之间的阻抗不匹配”。

比如JTable,视图中选择的行索引可能与模型中的对应行不匹配,可能是由于排序等原因。该getValueAt()方法似乎是一种方便的调用方式convertRowIndexToModel()。这在 Swing 的可分离模型架构中很常见,它“将每个组件的视图和控制器部分折叠成单个 UI(用户界面)对象”。请参阅Swing 架构概述

于 2010-05-15T20:03:52.910 回答