2010-06-15 2 views
1

버튼을 클릭 할 때와 같이 만들고 싶습니다. 그러면 새 파일이 만들어집니다. 그런 다음 jTree가 새 파일을 강조 표시합니다. 아래는 내 코드입니다. 현재 새 파일을 만들고 새 파일을 표시하지만 파일을 강조 표시하지 않습니다.JTree가 새 파일을 만듭니다. 선택한 파일을 만듭니다.

class FileTreeModel implements TreeModel { 
private FileNode root; 

public FileTreeModel(String directory) { 
    root = new FileNode(directory); 
} 

public Object getRoot() { 
    return root; 
} 

public Object getChild(Object parent, int index) { 
    FileNode parentNode = (FileNode) parent; 
    return new FileNode(parentNode, parentNode.listFiles()[index].getName()); 
} 

public int getChildCount(Object parent) { 
    FileNode parentNode = (FileNode) parent; 
    if (parent == null || !parentNode.isDirectory() 
      || parentNode.listFiles() == null) { 
     return 0; 
    } 

    return parentNode.listFiles().length; 
} 

public boolean isLeaf(Object node) { 
    return (getChildCount(node) == 0); 
} 

public int getIndexOfChild(Object parent, Object child) { 
    FileNode parentNode = (FileNode) parent; 
    FileNode childNode = (FileNode) child; 

    return Arrays.asList(parentNode.list()).indexOf(childNode.getName()); 
} 

public void valueForPathChanged(TreePath path, Object newValue) { 

} 

public void addTreeModelListener(TreeModelListener l) { 
} 

public void removeTreeModelListener(TreeModelListener l) { 
} 

당신이 JTree.setSelectionPath(TreePath path)를 호출하여이 작업을 수행 할 수 있습니다

 jTree = new JTree(); 
     jTree.setBounds(new Rectangle(164, 66, 180, 421)); 
     jTree.setBackground(SystemColor.inactiveCaptionBorder); 
     jTree.setBorder(BorderFactory.createTitledBorder(null, "", 
       TitledBorder.LEADING, TitledBorder.TOP, new Font("Arial", 
         Font.BOLD, 12), new Color(0, 0, 0))); 
     FileTreeModel model = new FileTreeModel(root); 
     jTree.setRootVisible(false); 
     jTree.setModel(model); 
     expandAll(jTree); 

public void expandAll(JTree tree) { 

    int row = 0; 
    while (row < tree.getRowCount()) { 
     tree.expandRow(row); 
     row++; 
    } 
    } 

답변

1

}

class FileNode extends java.io.File { 

public FileNode(String directory) { 
    super(directory); 
} 

public FileNode(FileNode parent, String child) { 
    super(parent, child); 
} 

@Override 
public String toString() { 
    return getName(); 

} 

};

+0

안녕하세요 당신이 대답을 주셔서 감사합니다, 만약 내가 파일 이름을 알게되면 NewFile TreePath를 알 수 있니? – user236501

+0

@ newbie123 : 여기에 예제가 있습니다. http://stackoverflow.com/questions/2958322 – trashgod

+0

코드가 작동하지 않습니다 – user236501