제가 이번에 기말 프로젝트로 jtree를 이용한 프로그램을 개발하고 있습니다.


버튼 이벤트를 이용해서 JFileChooser에선택된 파일이 항목으로 추가되도록 하려 하는데
처음 트리에 항목을 추가한후
다시한번 항목을 추가하면
추가가 안되네요
분명 트리에 추가는 되는데.. ui에 업데이트가 안됩니다

아래는 제 코드입니다

-UiMain.java-

import java.awt.BorderLayout;
...

class TablePanel extends JPanel{
...
}
class TreePanel extends JPanel{
public DefaultMutableTreeNode root;
TreePanel(){
setLayout(new BorderLayout());
root = new DefaultMutableTreeNode("파일목록");

JTree tree = new JTree(root);
tree.setEditable(false);
tree.getSelectionModel().setSelectionMode
(TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.setShowsRootHandles(true);
add(new JScrollPane(tree));
}
}
public class UiMain extends JFrame implements ActionListener{
private JButton B_AddFile;
private JButton B_AddEvent;
private JFileChooser chooser;
private TablePanel panelTable;
private TreePanel paneelTree;

public UiMain(){
super("파일관리자");
setBounds(300,300,1000,500);
setLayout(null);

B_AddFile = new JButton("파일추가");
B_AddFile.setBounds(10,10,90,30);
B_AddFile.addActionListener(this);
add(B_AddFile);

...

paneelTree = new TreePanel();
paneelTree.setBounds(10,50, 300, 200);
add(paneelTree);

setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == B_AddFile)
{
chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(true);
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
int ret = chooser.showOpenDialog(null);
System.out.println("파일선택완료");
for(int i = 0; i<chooser.getSelectedFiles().length; i++)
{
System.out.println(chooser.getSelectedFiles()[i].getPath());
DefaultMutableTreeNode node;
if(chooser.getSelectedFiles()[i].isDirectory())
paneelTree.root.add(node= findFile(chooser.getSelectedFiles()[i]) );
else
paneelTree.root.add(node=new DefaultMutableTreeNode(chooser.getSelectedFiles()[i].getPath()));
}
}
}
public DefaultMutableTreeNode findFile(File f){
DefaultMutableTreeNode root = new DefaultMutableTreeNode(f.getPath());
for(int i =0; i<f.list().length; i++)
{
File inFile = new File(f.getPath()+"\"+f.list()[i]);
if(inFile.isDirectory())
root.add(findFile(inFile));
else
root.add(new DefaultMutableTreeNode(inFile.getPath()));
}
return root;
}
}

findFile()은
폴더안의 폴더안까지 들어가서
파일이 나올때까지 자신의 함수를 불러오는 재귀함수입니다.

혹시 직접 이클립스로 옴겨 확인하시고 싶다면
전체 코드 드리겠습니다.

부탁 드립니다. 선생님들