import java.awt.*;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;
//森林狀的關系圖
public class JTreeDemo extends JFrame{
JTextField jtfInfo; //文本域,用於顯示點擊的節點名稱
public JTreeDemo(){
super("森林狀的關系圖"); //調用父類構造函數
DefaultMutableTreeNode root = new DefaultMutableTreeNode("設置"); //生成根節點
DefaultMutableTreeNode node1=new DefaultMutableTreeNode("常規"); //生成節點一
node1.add(new DefaultMutableTreeNode("默認路徑")); //增加新節點到節點一上
node1.add(new DefaultMutableTreeNode("保存選項"));
root.add(node1); //增加節點一到根節點上
root.add(new DefaultMutableTreeNode("界面"));
root.add(new DefaultMutableTreeNode("提示聲音"));
root.add(new DefaultMutableTreeNode("打印"));
JTree tree = new JTree(root); //得到JTree的實例
DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer)tree.getCellRenderer(); //得到JTree的Renderer
renderer.setLeafIcon(null); //設置葉子節點圖標為空
renderer.setClosedIcon(null); //設置關閉節點的圖標為空
renderer.setOpenIcon(null); //設置打開節點的圖標為空
tree.addTreeSelectionListener(new TreeSelectionListener() { //選擇節點的事件處理
public void valueChanged(TreeSelectionEvent evt) {
TreePath path = evt.getPath(); //得到選擇路徑
String info=path.getLastPathComponent().toString(); //得到選擇的節點名稱
jtfInfo.setText(info); //在文本域中顯示名稱
}
});
JScrollPane jsp=new JScrollPane(tree); //增加JTree到滾動窗格
jtfInfo=new JTextField(); //實例化文本域
jtfInfo.setEditable(false); //文本域不可編輯
getContentPane().add(jsp,BorderLayout.CENTER); //增加組件到容器上
getContentPane().add(jtfInfo,BorderLayout.SOUTH);
setSize(250,200); //設置窗口尺寸
setVisible(true); //設置窗口可視
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //關閉窗口時退出程序
}
public static void main(String[] args){
new JTreeDemo();
}
}