您的位置:首页 > 其它

Jtree-对后台传来的数据报文动态创建树节点

2016-05-19 00:00 477 查看
摘要: 对后台传来的数据报文[[态名,应用名,节点名],[态名,应用名,节点名],。。。]需要动态的进行创建树节点。



//左侧树创建

public JTree refreshTreeTable(){

//eventOneInfo为传来的数据报文Vector<Vector<String>> eventOneInfo ;

//[[4,realtime,public,scd1],[4,realtime,public,scd2],[4,realtime,public_2,scd2], [4,realtime,public_3,scd2]]
if (eventOneInfo.isEmpty()) {
// 树的数据模型
treemodel = new DefaultTreeModel(root);
// 设置数据模型
jTree = new JTree();
jTree.setModel(treemodel);
jTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
jTree.setRootVisible(false);
jTree.updateUI();

}
SwingUtilities.invokeLater(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub

for (int i = 0; i < eventOneInfo.size(); i++) {
Vector<String> element_one=eventOneInfo.elementAt(i);
DefaultMutableTreeNode node1_one = new DefaultMutableTreeNode(element_one.get(1).trim());
DefaultMutableTreeNode node1_two = new DefaultMutableTreeNode(element_one.get(2).trim());
DefaultMutableTreeNode node1_three = new DefaultMutableTreeNode(element_one.get(3).trim());

node1_one =searchNode(element_one.elementAt(1).trim(), root);
if (node1_one != null) {
node1_two =searchNode(element_one.elementAt(2).trim(), node1_one);
if (node1_two != null) {
&nb
3ff0
sp; node1_three =searchNode(element_one.elementAt(3).trim(), node1_two);
if (node1_three != null) {

}else {
node1_three = new DefaultMutableTreeNode(element_one.elementAt(3).trim());
treemodel.insertNodeInto(node1_three, node1_two, node1_two.getChildCount());
// ((DefaultTreeModel)jTree.getModel()).insertNodeInto(node1_three, node1_two, node1_two.getChildCount());
}

}else {
node1_two = new DefaultMutableTreeNode(element_one.elementAt(2).trim());
node1_two.add(node1_three);
treemodel.insertNodeInto(node1_two, node1_one, node1_one.getChildCount());
// ((DefaultTreeModel)jTree.getModel()).insertNodeInto(node1_two, node1_one, node1_one.getChildCount());

}

}else {
node1_one = new DefaultMutableTreeNode(element_one.elementAt(1).trim());
node1_two.add(node1_three);
node1_one.add(node1_two);
treemodel.insertNodeInto(node1_one, root, root.getChildCount());
// ((DefaultTreeModel)jTree.getModel()).insertNodeInto(node1_one, root, root.getChildCount());
}

}

}
});
// 设置数据模型
jTree = new JTree();
jTree.setModel(treemodel);
jTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
jTree.setRootVisible(false);
jTree.updateUI();

return jTree;

}

//=================================================================

//树节点查找
public DefaultMutableTreeNode searchNode(String nodeStr, DefaultMutableTreeNode m_rootNode)
{
DefaultMutableTreeNode node = null;
Enumeration e = m_rootNode.breadthFirstEnumeration();
while (e.hasMoreElements())
{
node = (DefaultMutableTreeNode) e.nextElement();
if (nodeStr.equals(node.getUserObject().toString()))
{
return node;
}
}
return null;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息