- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个基于netbeans平台的应用程序。
在一个 TopComponent 中,我对 OutlineView 进行子类化以显示节点集合。此 OutlineView 有一些列,用户可以使用这些列对不同属性的节点集合进行排序。
我的问题是,在我对节点进行排序后(通过 GUI,单击列),我希望获得当前有序状态的节点集合。我还没有找到办法做到这一点?
这就是我的 OutlineView 的外观...(排序之前)
------------------------
|Nodes | Prop1 | Prop2 |
|-----------------------
|Node1 | 1 | a |
|-----------------------
|Node2 | 5 | y |
|----------------------
|Node3 | 2 | h |
|-----------------------
|Node4 | 3 | x |
|-----------------------
然后,在我单击“Prop1”后,它将重新排列。
如果我从 ExplorerManager 获取节点,它们将按原始顺序排列,而不是按排序顺序排列。
如果我从模型中获取节点;
for (int i = 0; i < getOutline().getModel().getRowCount(); i++) {
TreeNode treeNode = (TreeNode) getOutline().getModel().getValueAt(i, 0);
// still in the original order
}
它们仍将按原来的顺序...
那么有人知道我应该如何让它们按照新的排序顺序排列吗?
最佳答案
好吧,我找到了一个足以满足我的需求的解决方案,虽然不是很漂亮,但我想我会分享它。我添加了一个列模型监听器,当用户单击该列时将调用该监听器,然后“稍后”获取排序的节点。
我仍然对监听排序的方式感兴趣,因为这个列模型监听器感觉不太漂亮......
getOutline().getColumnModel().addColumnModelListener(new TableColumnModelListener() {
@Override
public void columnAdded(TableColumnModelEvent tcme) { }
@Override
public void columnRemoved(TableColumnModelEvent tcme) { }
@Override
public void columnMoved(TableColumnModelEvent tcme) {
/* Must be done with invoke later, since
* this will be called when the user clicks on the column, not
* when the actual sorting takes place...
*/
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
getSortedNodes();
}
});
}
@Override
public void columnMarginChanged(ChangeEvent ce) { }
@Override
public void columnSelectionChanged(ListSelectionEvent lse) { }
});
private List<Node> getSortedNodes() {
List<Node> sortedNodes = new ArrayList<>();
for (int i = 0; i < getOutline().getRowCount(); i++) {
int sortedIndex = getOutline().convertRowIndexToModel(i);
ETable.RowMapping mapping = new ETable.RowMapping(sortedIndex, getOutline().getModel(), getOutline());
Node node = (Node) mapping.getTransformedValue(0);
sortedNodes.add(node);
}
return sortedNodes;
}
关于java - 如何按当前顺序从 OutlineView 获取节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19497484/
A 有一个插件,我想覆盖默认的 Outline View ,但我想使用默认 Outline(Overview) 中的一些功能,在哪里可以获得默认 OutlineView 实现的源代码? 最佳答案 您可
我正在开发一个基于netbeans平台的应用程序。 在一个 TopComponent 中,我对 OutlineView 进行子类化以显示节点集合。此 OutlineView 有一些列,用户可以使用这些
如何绑定(bind) NSOutlineView(或 NSTableView)以便项目可以编辑?我知道它有可编辑字段,但我不确定如何使用它,所以任何帮助都会很好。我有一个绑定(bind)到 NSArr
上下文: 我有一个 NSOutlineView,它的作用类似于源列表,但不使用实际的源列表突出显示样式。 (想象一下 Finder 中的侧边栏。) 这个outlineView只有两个级别:1)“组”和
我是一名优秀的程序员,十分优秀!