我在CSDN上看到一人发了一段关于Tree的源码,看了一下
发现里面没有关于window的Closing的事件监听
但运行的时候却可以通过关闭按钮关闭
不知何解
小弟初学,请指教import java.awt.*; //
import java.awt.event.*;//import javax.swing.*;//JFC
import javax.swing.event.*;//JFC事件类import javax.swing.tree.DefaultMutableTreeNode;//节点类
import javax.swing.tree.DefaultTreeModel;//模型
import javax.swing.tree.TreePath;//树的路径public class JTreeTest extends JFrame //继承JFrame
{
DefaultMutableTreeNode rootNode=createNode();//执行createNode()函数,将返回值传给rootNode
JTree tree = new JTree(rootNode); //创建树
JTextField textField = new JTextField(10);//创建文本框
JScrollPane scrollPane=new JScrollPane();//创建滚动条
JButton button1 = new JButton();
JButton button2 = new JButton();
JPanel p=new JPanel();//创建面板
Container c;//创建容器
public JTreeTest()
{
c=this.getContentPane();//将JFrame中的所用对象传递给C
this.setTitle("JTreeTest");
c.setLayout(new BorderLayout());//BorderLayout,布局管理器
button1.setText("增加");
button2.setText("删除");
p.add(textField);
p.add(button2);
p.add(button1);
c.add(p,BorderLayout.NORTH);
c.add(scrollPane,BorderLayout.CENTER);
scrollPane.getViewport().add(tree);//向滚动面板中加入树
//scrollPane.add(tree);
//添加TreeSelection事件侦听器
tree.addTreeSelectionListener(new TreeSelectionListener()
{
//当选择一个节点时,把节点的标题显示到文本框中
public void valueChanged(TreeSelectionEvent e)
{
//获取当前节点的路径
TreePath selectionPath = e.getPath();
DefaultMutableTreeNode selectedNode;
//获取当前节点
selectedNode=(DefaultMutableTreeNode)selectionPath.getLastPathComponent();
textField.setText(selectedNode.toString());
}
});
button1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//调用函数
addNode();
}
});
button2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//调用函数
removeNode();
}
});
}
public static void main(String args[])
{
JTreeTest app=new JTreeTest();
app.setBounds(new Rectangle(100,100,255,310));
app.show();
}
DefaultMutableTreeNode createNode ()
{
//创建节点
DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("Java");
DefaultMutableTreeNode books = new DefaultMutableTreeNode("Java书籍");
DefaultMutableTreeNode tools = new DefaultMutableTreeNode("Java开发工具");
//添加字节点
rootNode.add(books);
rootNode.add(tools);
books.add(new DefaultMutableTreeNode ("Java高级实例编程"));
books.add(new DefaultMutableTreeNode ("Java编程思想"));
books.add(new DefaultMutableTreeNode ("Java编程详解"));
tools.add(new DefaultMutableTreeNode ("JBuilder"));
tools.add(new DefaultMutableTreeNode ("JCreator"));
tools.add(new DefaultMutableTreeNode ("Visual J++"));
return rootNode;
}
//删除节点
void removeNode()
{
//获取当前节点的路径
TreePath selectedPath = tree.getSelectionPath();
if (selectedPath!=null)
{
DefaultMutableTreeNode selectedNode;
DefaultTreeModel treeModel;
//获取当前节点
selectedNode = (DefaultMutableTreeNode)selectedPath.getLastPathComponent();
treeModel=(DefaultTreeModel)tree.getModel();
//删除节点
if(selectedNode.getParent()!=null)
treeModel.removeNodeFromParent(selectedNode);
else
JOptionPane.showMessageDialog(this,"根节点不能删除!");
}
}
//向当前选中的节点中添加一个子节点
void addNode()
{
//定义一个节点,创建一个新节点,节点的标题用文本的内容
DefaultMutableTreeNode newNode;
newNode = new DefaultMutableTreeNode(textField.getText());
//获取当前节点的路径
TreePath selectedPath = tree.getSelectionPath();
if (selectedPath!=null)
{
DefaultMutableTreeNode selectedNode;
DefaultTreeModel treeModel;
//获取当前节点
selectedNode = (DefaultMutableTreeNode)selectedPath.getLastPathComponent();
treeModel=(DefaultTreeModel)tree.getModel();
//增加节点
treeModel.insertNodeInto(newNode,selectedNode,selectedNode.getChildCount());
}
}
}
发现里面没有关于window的Closing的事件监听
但运行的时候却可以通过关闭按钮关闭
不知何解
小弟初学,请指教import java.awt.*; //
import java.awt.event.*;//import javax.swing.*;//JFC
import javax.swing.event.*;//JFC事件类import javax.swing.tree.DefaultMutableTreeNode;//节点类
import javax.swing.tree.DefaultTreeModel;//模型
import javax.swing.tree.TreePath;//树的路径public class JTreeTest extends JFrame //继承JFrame
{
DefaultMutableTreeNode rootNode=createNode();//执行createNode()函数,将返回值传给rootNode
JTree tree = new JTree(rootNode); //创建树
JTextField textField = new JTextField(10);//创建文本框
JScrollPane scrollPane=new JScrollPane();//创建滚动条
JButton button1 = new JButton();
JButton button2 = new JButton();
JPanel p=new JPanel();//创建面板
Container c;//创建容器
public JTreeTest()
{
c=this.getContentPane();//将JFrame中的所用对象传递给C
this.setTitle("JTreeTest");
c.setLayout(new BorderLayout());//BorderLayout,布局管理器
button1.setText("增加");
button2.setText("删除");
p.add(textField);
p.add(button2);
p.add(button1);
c.add(p,BorderLayout.NORTH);
c.add(scrollPane,BorderLayout.CENTER);
scrollPane.getViewport().add(tree);//向滚动面板中加入树
//scrollPane.add(tree);
//添加TreeSelection事件侦听器
tree.addTreeSelectionListener(new TreeSelectionListener()
{
//当选择一个节点时,把节点的标题显示到文本框中
public void valueChanged(TreeSelectionEvent e)
{
//获取当前节点的路径
TreePath selectionPath = e.getPath();
DefaultMutableTreeNode selectedNode;
//获取当前节点
selectedNode=(DefaultMutableTreeNode)selectionPath.getLastPathComponent();
textField.setText(selectedNode.toString());
}
});
button1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//调用函数
addNode();
}
});
button2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//调用函数
removeNode();
}
});
}
public static void main(String args[])
{
JTreeTest app=new JTreeTest();
app.setBounds(new Rectangle(100,100,255,310));
app.show();
}
DefaultMutableTreeNode createNode ()
{
//创建节点
DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("Java");
DefaultMutableTreeNode books = new DefaultMutableTreeNode("Java书籍");
DefaultMutableTreeNode tools = new DefaultMutableTreeNode("Java开发工具");
//添加字节点
rootNode.add(books);
rootNode.add(tools);
books.add(new DefaultMutableTreeNode ("Java高级实例编程"));
books.add(new DefaultMutableTreeNode ("Java编程思想"));
books.add(new DefaultMutableTreeNode ("Java编程详解"));
tools.add(new DefaultMutableTreeNode ("JBuilder"));
tools.add(new DefaultMutableTreeNode ("JCreator"));
tools.add(new DefaultMutableTreeNode ("Visual J++"));
return rootNode;
}
//删除节点
void removeNode()
{
//获取当前节点的路径
TreePath selectedPath = tree.getSelectionPath();
if (selectedPath!=null)
{
DefaultMutableTreeNode selectedNode;
DefaultTreeModel treeModel;
//获取当前节点
selectedNode = (DefaultMutableTreeNode)selectedPath.getLastPathComponent();
treeModel=(DefaultTreeModel)tree.getModel();
//删除节点
if(selectedNode.getParent()!=null)
treeModel.removeNodeFromParent(selectedNode);
else
JOptionPane.showMessageDialog(this,"根节点不能删除!");
}
}
//向当前选中的节点中添加一个子节点
void addNode()
{
//定义一个节点,创建一个新节点,节点的标题用文本的内容
DefaultMutableTreeNode newNode;
newNode = new DefaultMutableTreeNode(textField.getText());
//获取当前节点的路径
TreePath selectedPath = tree.getSelectionPath();
if (selectedPath!=null)
{
DefaultMutableTreeNode selectedNode;
DefaultTreeModel treeModel;
//获取当前节点
selectedNode = (DefaultMutableTreeNode)selectedPath.getLastPathComponent();
treeModel=(DefaultTreeModel)tree.getModel();
//增加节点
treeModel.insertNodeInto(newNode,selectedNode,selectedNode.getChildCount());
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货