62,568
社区成员




import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTree;
import javax.swing.WindowConstants;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeModel;
public class TreeTest {
JFrame jf = new JFrame();
JPanel jp = new JPanel();
DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
DefaultMutableTreeNode children = new DefaultMutableTreeNode("children");
TreeModel tm = new DefaultTreeModel(root);
JTree jt2 = new JTree(tm);
public TreeTest() {
jf.setSize(300, 300);
jf.add(jp);
root.add(children);// Index = 0
children.add(new DefaultMutableTreeNode("subChildren1"));
root.add(new DefaultMutableTreeNode("children1"));// Index = 1
root.add(new DefaultMutableTreeNode("children2"));// Index = 2
root.add(new DefaultMutableTreeNode("children3"));// Index = 3
root.remove(2);
jp.add(jt2);
jf.setVisible(true);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new TreeTest();
}
}
/*
*
* Created on 08/03/2010
*/
package form;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeModel;
/**
*
* @author Damon
*/
public class form extends javax.swing.JFrame {
/** Creates new form form */
public form() {
initComponents();
initialTreeView();
}
public void initialTreeView() {
System.out.println("initialTreeView");
DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
DefaultMutableTreeNode children = new DefaultMutableTreeNode("children");
TreeModel tm = new DefaultTreeModel(root);
JTree jt2 = new JTree(tm);
root.add(children);// Index = 0
children.add(new DefaultMutableTreeNode("subChildren1"));
root.add(new DefaultMutableTreeNode("children1"));// Index = 1
root.add(new DefaultMutableTreeNode("children2"));// Index = 2
root.add(new DefaultMutableTreeNode("children3"));// Index = 3
root.remove(2);
jp.add(jt2);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
//GEN-BEGIN:initComponents
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jp = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("Where is Jtree?");
javax.swing.GroupLayout jpLayout = new javax.swing.GroupLayout(jp);
jp.setLayout(jpLayout);
jpLayout.setHorizontalGroup(jpLayout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addGroup(
jpLayout.createSequentialGroup().addContainerGap()
.addComponent(jLabel1).addContainerGap(306,
Short.MAX_VALUE)));
jpLayout.setVerticalGroup(jpLayout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addGroup(
jpLayout.createSequentialGroup().addContainerGap()
.addComponent(jLabel1).addContainerGap(275,
Short.MAX_VALUE)));
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addComponent(jp,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE));
layout.setVerticalGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addComponent(jp,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE));
pack();
}// </editor-fold>
//GEN-END:initComponents
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new form().setVisible(true);
}
});
}
//GEN-BEGIN:variables
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jp;
// End of variables declaration//GEN-END:variables
}
// 用来作为鼠标事件监听器的内部类
class MyJPopupListener extends MouseAdapter
{
public MyJPopupListener(JPopupMenu j)
{//构造器,初始化弹出式菜单
for(int i=0;i<jmi.length;i++)
{
//将菜单项添加到弹出式菜单中
jpm.add(jmi[i]);
}
}
public void mouseReleased(MouseEvent e)
{//当鼠标释放时执行的动作
//测试鼠标事件是否为平台无关的触发器
if(e.isPopupTrigger())
{//显示弹出式菜单
jpm.show(e.getComponent(),e.getX(),e.getY());
}
}
}
//用来作为菜单项动作事件监听器的内部类
class MyPopMenuActionListener implements ActionListener
{
//文件选择器成员
private JFileChooser jfc=new JFileChooser();
//获取图片的getIcon方法
public ImageIcon getIcon()
{
//定义图片变量
ImageIcon icon=null;
//弹出打开对话框
jfc.showOpenDialog(Sample25_2.this);
//获取选择的文件
File f=jfc.getSelectedFile();
if(f!=null)
{//若获取的文件不为null,则根据此文件中的信息获取图片
icon=new ImageIcon(f.getPath());
}
//返回图片
return icon;
}
//实现ActionListener监听接口中的事件处理方法
public void actionPerformed(ActionEvent e)
{
//获取图片
ImageIcon newIcon=this.getIcon();
//获得树状列表当前的节点绘制器
DefaultTreeCellRenderer dtcr
=(DefaultTreeCellRenderer)jt.getCellRenderer();
if(e.getSource()==jmi[0])
{
//更改展开节点的图标
dtcr.setOpenIcon(newIcon);
//设置提示信息
jtf.setText("您重新定义了展开节点的图标!!!");
}
else if(e.getSource()==jmi[1])
{
//更改折叠节点的图标
dtcr.setClosedIcon(newIcon);
//设置提示信息
jtf.setText("您重新定义了折叠节点的图标!!!");
}
else if(e.getSource()==jmi[2])
{
//更改叶子节点的图标
dtcr.setLeafIcon(newIcon);
//设置提示信息
jtf.setText("您重新定义了叶子节点的图标!!!");
}
//记录当前选中的路径
TreePath tempTp=jt.getSelectionPath();
//更新树的数据模型
((DefaultTreeModel)jt.getModel()).reload();
//设置维持当前的选中的路径
jt.setSelectionPath(tempTp);
}
}
public Sample25_2()
{
for(int i=0;i<jbBar.length;i++)
{//将按扭添加到工具栏中
jtb.add(jbBar[i]);
}
for(int i=0;i<5;i++)
{//向根节点中添加5个预定义的章节点
dmtnRoot.add(new DefaultMutableTreeNode("第"+(i+1)+"章"));
}
for(int i=0;i<dmtnRoot.getChildCount();i++)
{
DefaultMutableTreeNode temp=(DefaultMutableTreeNode)dmtnRoot.getChildAt(i);
for(int j=0;j<2;j++)
{//向每个章节节点中添加2个预定义的小节节点
temp.add(new DefaultMutableTreeNode("第"+(j+1)+"节"));
}
}
//设置JTree为可编辑状态
jt.setEditable(true);
//设置JTree将显示根节点的控制图标
jt.setShowsRootHandles(true);
//设置文本框为不可编辑状态
jtf.setEditable(false);
//将工具栏添加进窗体
this.add(jtb,BorderLayout.NORTH);
//分别树状列表以及文本框添加进窗体的中间以及下部
this.add(jsp,BorderLayout.CENTER);
this.add(jtf,BorderLayout.SOUTH);
//设置窗体的标题、大小位置以及可见性
this.setTitle("目录管理器");
this.setResizable(false);
this.setBounds(100,100,350,400);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//创建监听器对象
MyTreeListener mtl=new MyTreeListener();
//为JTree注册选择事件的监听器
jt.addTreeSelectionListener(mtl);
//为JTree注册选择展开以及折叠事件的监听器
jt.addTreeExpansionListener(mtl);
//为JTree注册数据模型更改事件的监听器
dtm.addTreeModelListener(mtl);
//创建监听器对象
MyToolBarButtonListener mtbl=new MyToolBarButtonListener();
//为添加按扭注册监听器
jbBar[0].addActionListener(mtbl);
//为添加按扭注册监听器
jbBar[1].addActionListener(mtbl);
//创建鼠标事件的监听器
MyJPopupListener mjpl=new MyJPopupListener(jpm);
//为JTree注册鼠标事件的监听器
jt.addMouseListener(mjpl);
//创建菜单项动作事件监听器对象
MyPopMenuActionListener mpmal=new MyPopMenuActionListener();
//为菜单项注册动作事件监听器
for(int i=0;i<jmi.length;i++)
{
jmi[i].addActionListener(mpmal);
}
}
public static void main(String[] args)
{
//创建Sample25_2窗体对象
new Sample25_2();
}
}[/
package com.inspur.view.test;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.JTree;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.event.TreeModelEvent;
import javax.swing.event.TreeModelListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
//定义该类继承自JFrame
public class Sample25_2 extends JFrame
{
//创建并初始化工具栏中的工具按扭数组
private JButton[] jbBar={new JButton("添加"),new JButton("删除")};
//创建工具栏
private JToolBar jtb=new JToolBar();
//创建用来显示情况的文本框
private JTextField jtf=new JTextField();
//创建根节点
private DefaultMutableTreeNode dmtnRoot=new DefaultMutableTreeNode("目录");
//创建树的数据模型
private DefaultTreeModel dtm=new DefaultTreeModel(dmtnRoot);
//创建树状列表控件
private JTree jt=new JTree(dtm);
//为树状列表创建滚动窗口
private JScrollPane jsp=new JScrollPane(jt);
//用来记录当前选中节点的成员变量
private DefaultMutableTreeNode tempNode;
//创建弹出式菜单
private JPopupMenu jpm=new JPopupMenu();
//创建菜单项数组
private JMenuItem[] jmi={new JMenuItem("定义非叶子节点展开图标"),
new JMenuItem("定义非叶子节点折叠图标"),new JMenuItem("定义叶子节点图标")};
//用来作为树相关事件监听器的内部类
private class MyTreeListener implements TreeExpansionListener,
TreeModelListener,TreeSelectionListener
{
//定义用来记录路径的节点数组
private Object[] tempNodes;
//创建StringBuffer对象
private StringBuffer tempMsg=new StringBuffer();
//声明用来记录路径TreePath
private TreePath tp;
//处理选中某节点后发生事件的方法
public void valueChanged(TreeSelectionEvent tse)
{
//获得根节点到选中节点的路径
tp=tse.getNewLeadSelectionPath();
if(tp!=null)
{
//从路径中获得所有路径中的节点
tempNodes=tp.getPath();
//循环对路径中的每个节点进行处理
for(int i=0;i<tempNodes.length;i++)
{
//将各个节点的内容连接起来并添加到StringBuffer中
tempMsg.append(tempNodes[i]);
if(i!=tempNodes.length-1)
{//在各个节点中间添加“>>”符号
tempMsg.append(">>");
}
}
// javax.swing.GroupLayout jpLayout = new javax.swing.GroupLayout(jp);
// jp.setLayout(jpLayout);
// jpLayout.setHorizontalGroup(jpLayout.createParallelGroup(
// javax.swing.GroupLayout.Alignment.LEADING).addGroup(
// jpLayout.createSequentialGroup().addContainerGap()
// .addComponent(jLabel1).addContainerGap(306,
// Short.MAX_VALUE)));
// jpLayout.setVerticalGroup(jpLayout.createParallelGroup(
// javax.swing.GroupLayout.Alignment.LEADING).addGroup(
// jpLayout.createSequentialGroup().addContainerGap()
// .addComponent(jLabel1).addContainerGap(275,
// Short.MAX_VALUE)));