import java.util.StringTokenizer;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTree;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
public class JTreeTest extends JFrame implements TreeExpansionListener, TreeSelectionListener{
JTree tree;
DefaultMutableTreeNode node, languageNode, webNode, htmlNode, frameworkNode;
JLabel lbl = new JLabel();
public JTreeTest() {
node = new DefaultMutableTreeNode("Root");
languageNode = new DefaultMutableTreeNode("language");
node.add(languageNode);
languageNode.add(new DefaultMutableTreeNode("Java"));
languageNode.add(new DefaultMutableTreeNode("Asp"));
languageNode.add(new DefaultMutableTreeNode("Jsp"));
webNode = new DefaultMutableTreeNode("web");
node.add(webNode);
htmlNode = new DefaultMutableTreeNode("html");
webNode.add(htmlNode);
htmlNode.add(new DefaultMutableTreeNode("웹표준"));
webNode.add(new DefaultMutableTreeNode("css3"));
frameworkNode = new DefaultMutableTreeNode("framework");
node.add(frameworkNode);
frameworkNode.add(new DefaultMutableTreeNode("spring"));
frameworkNode.add(new DefaultMutableTreeNode("mybatis"));
tree = new JTree(node);
add(tree, "Center");
add(lbl, "South");
setSize(400, 500);
setVisible(true);
//폴더 확장
tree.expandRow(3); //root의 하위 폴더의 번호 - 폴더 확장
tree.addTreeExpansionListener(this);
tree.addTreeSelectionListener(this);
}
//오버라이딩
public void treeExpanded(TreeExpansionEvent tee){
System.out.println("treeEx");
}
public void treeCollapsed(TreeExpansionEvent tee){
System.out.println("treeCol");
}
public void valueChanged(TreeSelectionEvent tse){
TreePath tp = tree.getSelectionPath(); //경로 구하기
StringTokenizer st = new StringTokenizer(tp.toString(), "[,]");
String pathStr = "";
while(st.hasMoreTokens()){
pathStr += st.nextToken().trim() + "/";
}
lbl.setText(pathStr);
}
public static void main(String[] args) {
new JTreeTest();
}
}
'응용 SoftWare > JAVA' 카테고리의 다른 글
JSplitPane 예제2 (0) | 2016.12.21 |
---|---|
JSplitPane 예제 (0) | 2016.12.21 |
Thread를 이용한 디지털 시계 (0) | 2016.12.21 |
[Swing] 달력만들기 (0) | 2016.12.16 |
FileReader (0) | 2016.12.16 |