import?javax.swing.JFrame;
import?javax.swing.JOptionPane;
import?javax.swing.JScrollPane;
import?javax.swing.JTree;
import?javax.swing.ScrollPaneConstants;
import?javax.swing.UIManager;
import?javax.swing.UnsupportedLookAndFeelException;
import?javax.swing.event.TreeSelectionEvent;
import?javax.swing.event.TreeSelectionListener;
import?javax.swing.tree.DefaultMutableTreeNode;
import?javax.swing.tree.DefaultTreeModel;
/**
*? *?@author?逝水 * */public?class?JTreeDemo?extends?JFrame?implements?TreeSelectionListener{
private?static?final?long?serialVersionUID?=?-6209666185329417356L;
//樹組件
protected?JTree?jTree?;
public?JTreeDemo(){
init();
}
//初始化
private?void?init()?{
jTree?=?new?JTree();
//樹節點的相關數據
DefaultMutableTreeNode?root?=?new?DefaultMutableTreeNode("三國名將");
DefaultMutableTreeNode?shu?=?new?DefaultMutableTreeNode("蜀國");
DefaultMutableTreeNode?wei?=?new?DefaultMutableTreeNode("魏國");
DefaultMutableTreeNode?wu?=?new?DefaultMutableTreeNode("吳國");
shu.add(new?DefaultMutableTreeNode("關羽"));
shu.add(new?DefaultMutableTreeNode("張飛"));
shu.add(new?DefaultMutableTreeNode("趙雲"));
shu.add(new?DefaultMutableTreeNode("馬超"));
shu.add(new?DefaultMutableTreeNode("黃忠"));
wei.add(new?DefaultMutableTreeNode("張遼"));
wei.add(new?DefaultMutableTreeNode("典韋"));
wei.add(new?DefaultMutableTreeNode("夏侯惇"));
wei.add(new?DefaultMutableTreeNode("許褚"));
wei.add(new?DefaultMutableTreeNode("徐晃"));
wu.add(new?DefaultMutableTreeNode("太史慈"));
wu.add(new?DefaultMutableTreeNode("甘寧"));
wu.add(new?DefaultMutableTreeNode("孫策"));
wu.add(new?DefaultMutableTreeNode("周瑜"));
wu.add(new?DefaultMutableTreeNode("陸遜"));
root.add(shu);
root.add(wei);
root.add(wu);
//樹的數據模型
DefaultTreeModel?model?=?new?DefaultTreeModel(root);
//設置數據模型
jTree.setModel(model);
//?展開所有樹
for?(int?i?=?0;?i?<?jTree.getRowCount();?i++)
jTree.expandRow(i);
//添加事件
jTree.addTreeSelectionListener(this);
//滾動面板
JScrollPane?jScrollPane?=?new?JScrollPane(jTree,
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//添加樹到滾動面板
jScrollPane.getViewport().add(jTree);
//添加滾動面板到窗口中
this.getContentPane().add(jScrollPane);
this.setTitle("JTree的事件例子");
this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public?static?void?main(String[]?args){
//Windows風格
//String?lookAndFeel?=?"com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
//Windows?Classic風格
//String?lookAndFeel?=?"com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel";
//系統當前風格
String?lookAndFeel?=?UIManager.getSystemLookAndFeelClassName();
try?{
UIManager.setLookAndFeel(lookAndFeel);
}?catch?(ClassNotFoundException?e)?{
e.printStackTrace();
}?catch?(InstantiationException?e)?{
e.printStackTrace();
}?catch?(IllegalAccessException?e)?{
e.printStackTrace();
}?catch?(UnsupportedLookAndFeelException?e)?{
e.printStackTrace();
}
JTreeDemo?demo?=?new?JTreeDemo();
demo.setVisible(true);
}
@Override
public?void?valueChanged(TreeSelectionEvent?e)?{
//獲取選擇的節點
DefaultMutableTreeNode?node?=?(DefaultMutableTreeNode)?jTree
.getLastSelectedPathComponent();
if(node.getLevel()?==?0){
//顯示提示信息
JOptionPane.showMessageDialog(null,?
node.getUserObject()+":?***"+node.getChildCount()+"個國家");
}else?if(node.getLevel()?==?1){
//顯示提示信息
JOptionPane.showMessageDialog(null,?
node.getUserObject()+":?***"+node.getChildCount()+"名名將");
}else?if(node.getLevel()?==?2){
//顯示提示信息
JOptionPane.showMessageDialog(null,?node.getParent()+"名將:?"+
node.getUserObject());
}
}
}