0
我正在調試正在使用Hibernate的Java應用程序。 它在主頁面有一個JTree,它是動態填充的數據庫,需要在顯示時進行排序。使用Hibernate技術在JAVA中按字母順序對Jtree進行排序
我試圖做查詢語句排序,但它沒有工作。 我也使用了JTree的一些屬性,如setSort()
函數爲了排序JTree元素,但它仍然不能正常工作。
您是否有任何想法如何在顯示數據時對此JTree元素進行排序!?
我正在調試正在使用Hibernate的Java應用程序。 它在主頁面有一個JTree,它是動態填充的數據庫,需要在顯示時進行排序。使用Hibernate技術在JAVA中按字母順序對Jtree進行排序
我試圖做查詢語句排序,但它沒有工作。 我也使用了JTree的一些屬性,如setSort()
函數爲了排序JTree元素,但它仍然不能正常工作。
您是否有任何想法如何在顯示數據時對此JTree元素進行排序!?
通過擴展DefaultMutableTreeNode
創建自己的節點,每當一個新的子被添加到節點排序它
class MyNode extends DefaultMutableTreeNode {
public MyNode(Object userObject) {
super(userObject);
}
@Override
public void add(MutableTreeNode newChild) {
super.add(newChild);
sort();//add to tree and sort immediately use in case the model is small if large comment it and and call node.sort once you've added all the children
}
public void sort() {
Collections.sort(children, compare());
}
private Comparator compare() {
return new Comparator<DefaultMutableTreeNode>() {
@Override
public int compare(DefaultMutableTreeNode o1, DefaultMutableTreeNode o2) {
return o1.getUserObject().toString().compareTo(o2.getUserObject().toString());
}
};
}
}
例子:在這裏,我添加數據的降序排列,但因爲我們將顯示在升序排序每個節點只要我們增加一個孩子家長
JFrame frame = new JFrame();
//Mock data
MyNode root = new MyNode("Root");
for (int i = 5; i > 0; i--) {
MyNode parent = new MyNode("Parent" + i);
for (int j = 5; j > 0; j--) {
parent.add(new MyNode("Child" + j));
}
//parent.sort(); do like this if the data model is large and sort(); is commented in add Methods
root.add(parent);
}
//root.sort();
DefaultTreeModel tmodel = new DefaultTreeModel(root);
JTree tree = new JTree(tmodel);
frame.add(new JScrollPane(tree));
frame.setTitle("Tree Editor Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
樣本輸出
'我試圖做查詢語句中的排序,但它沒有工作。爲什麼不?發生了什麼?如果您從數據庫中獲取數據,那麼排序它似乎很自然,而不是在JTree中。 – geert3