2012-11-09 5 views
3
public class TabularMibTreeModel extends DefaultTreeModel { 
    public TabularMibTreeModel() { 
     super(new DefaultMutableTreeNode("Tablular MIBs")); 
     loadParentMibs(); 
    } 

    @Override 
    public void reload() { 
     super.reload(); 
    } 

    private void loadParentMibs() { 
      try { 
       ResultSet rs=Application.getDBHandler().executeQuery(SQLQueries.SELECT_TABULARMIBS_PARENT); 

       while(rs.next()){    
        String entryOID = rs.getString("mt_oid");  
        DefaultMutableTreeNode node=new DefaultMutableTreeNode(new MibNode(entryOID, "Parent")); 
        node.add(new DefaultMutableTreeNode(Boolean.TRUE)); 

        ((DefaultMutableTreeNode) getRoot()).insert(node,((DefaultMutableTreeNode)getRoot()).getChildCount()) 

        node=null; 

       } 

      } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 

} 

방금 ​​JTree에 대해 학습하기 시작했습니다. entryOID가 부모 인 jtree를 만들었습니다. 실제로 백엔드에서는 entryOID에 부모가 있습니다. 이 파안트를 얻을 수 있고 어떻게 엔트리 오드 (entryOID)를 피함으로써 그것을 표시 할 수 있습니까? 도와주세요?주어진 자식 노드에서 부모 가져 오기

+3

더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. SQL을 대체하기 위해 데이터를 하드 코딩하거나, 이미 데이터가 들어있는 기본 트리를 사용해야 할 것입니다. –

+3

사용자 정의 XxxTreeNode를 생성하는 직접적인 방법이없고 내부 반복이 필요합니다. 1. XxxModel에서 JDBC를 구현하지 않습니다. 2. ResultSet은 finally 블록에서 close()되어야하며, 그렇지 않으면 JVM 메모리 3에 머물러 있습니다. ... @ Andrew Thompson이 언급 한대로 SSCCE를 게시하십시오. 4. node = null; 새로운 루프가 적절한 로컬 Object를 만들기 때문에 반감입니다. – mKorbel

답변

1
private void loadParentMibs throws SQLException() { 

    ResultSet resultSet = Application.getDBHandler() 
    .executeQuery(SQLQueries.SELECT_TABULARMIBS_PARENT); 

    DefaultMutableTreeNode root = (DefaultMutableTreeNode)getRoot(); 

    Map<String, DefaultMutableTreeNode> parentsMap 
    = new HashMap<String, DefaultMutableTreeNode>(); 

    while(resultSet.next()) { 
    String parentId = resultSet.getString("mt_oid"); 

    DefaultMutableTreeNode parent = parentsMap.get(parentId); 
    if (parent == null) { 
     parent = new DefaultMutableTreeNode(parentId); 
     parentsMap.add(parentId, parent); 
     root.add(parent); 
    } 

     // Are you sure, you want Boolean.TRUE leafs 
     // in number of parent coincindence? 
     // May be you want leafs to contains some 
     // additional info from resultSet entity? 
    DefaultMutableTreeNode leaf = new DefaultMutableTreeNode(Boolean.TRUE); 
    parent.add(leaf); 
    } 

}