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++;
}
}
안녕하세요 당신이 대답을 주셔서 감사합니다, 만약 내가 파일 이름을 알게되면 NewFile TreePath를 알 수 있니? – user236501
@ newbie123 : 여기에 예제가 있습니다. http://stackoverflow.com/questions/2958322 – trashgod
코드가 작동하지 않습니다 – user236501