⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 apptree.java

📁 功能:最简单的显示JTree的示例.功能:最简单的显示JTree的示例.
💻 JAVA
字号:
/*程序文件名称:TreeDemoFrame.java
 *功能:最简单的显示JTree的示例
 */

import javax.swing.*;
import javax.swing.tree.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.io.*;

class Remember extends JFrame implements TreeSelectionListener,ActionListener
{
	JTree                     tree=null;
	int                       i=0;
	JTextArea                 text=new JTextArea("",20,20);
	DefaultMutableTreeNode    root;
	DefaultMutableTreeNode    month[]=new DefaultMutableTreeNode[13];
	JButton                   b_save=new JButton("保存日志"),
	                          b_del=new JButton("删除日志");
	                          
	//构造方法,完成界面及树结点初始化
	Remember()
	{
		Container con=getContentPane();
		DefaultMutableTreeNode root=new DefaultMutableTreeNode("心情日记本");
		//设置以月份为结点的树
		for(i=1;i<=12;i++)
		{
			month[i]=new DefaultMutableTreeNode(""+i+"月");
			root.add(month[i]);
		}
		for(i=1;i<=12;i++)
		{
			
			//处理有31天的月份
			if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
			{
				for(int j=1;j<=31;j++)
				    month[i].add(new DefaultMutableTreeNode(j+"日"));
			}
			//处理有30天的月份
			else if(i==4||i==6||i==9||i==11)
			{
				for(int j=1;j<=30;j++)
				    month[i].add(new DefaultMutableTreeNode(j+"日"));
			}
			else 
			{
				for(int j=1;j<=28;j++)
				    month[i].add(new DefaultMutableTreeNode(j+"日"));
			}
		}
		//设置监听
		b_save.addActionListener(this);
		b_del.addActionListener(this);
		tree=new JTree(root);
		JPanel p=new JPanel();
		//设置边界布局
		p.setLayout(new BorderLayout());
		JScrollPane scrollpane_1=new JScrollPane(text);
		//带滚动条的面板放置到中间,可以占据最大空间位置
		p.add(scrollpane_1,BorderLayout.CENTER);
		//设置面板,放置"保存"和删除按钮,面板放在上部
		JPanel p_1=new JPanel();
		p_1.add(b_save);
		p_1.add(b_del);
		p.add(p_1,BorderLayout.NORTH);
		JScrollPane scrollpane_2=new JScrollPane(tree);
		JSplitPane splitpane=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,scrollpane_2,p);
		tree.addTreeSelectionListener(this);
		con.add(splitpane);
		//设置窗体适配器,关闭功能
		addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent e)
			{ System.exit(0); }
		});
		setVisible(true);
		setBounds(70,80,200,300);
	}

	//处理树结点事件
	public void valueChanged(TreeSelectionEvent e)
	{
		//清空文本区中的内容
		text.setText("");
		if(e.getSource()==tree)
		{
			//定义被选中的结点
			DefaultMutableTreeNode node=(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
			//如果是叶结点,则可以对文件进行操作
			if(node.isLeaf())
			{
				String str=node.toString();
				for(int i=0;i<=12;i++)
				{
					if(node.getParent()==month[i])
					{
						try{
							String temp=null;
							//打开以结点所定义的文本为文件名的文件
							File f=new File(node.getParent().toString()+str+".txt");
							//建立文本文件输入流,读取文件
							FileReader file=new FileReader(f);
							BufferedReader in=new BufferedReader(file);
							//将读到的文件内容添加到文本区中
							while((temp=in.readLine())!=null)
						    	text.append(temp+'\n');
							file.close();
							in.close();
					   		}
						catch(FileNotFoundException e1){ }
						catch(IOException e1){ }
					}
				}
			}
		}
	}

	public void actionPerformed(ActionEvent e)
	{
		//处理"保存"按钮的事件
		if(e.getSource()==b_save)
		{
			DefaultMutableTreeNode node=(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
        	String str=node.toString();
	    	//如果是叶结点,则可以对文件进行操作
	    	if(node.isLeaf())
    		{
	    		//保存文件
	    		try{
		    		//建立叶结点所定义的文本为文件名的文件
		    		File f=new File(node.getParent().toString()+str+".txt");
		    		//建立文本文件输出流
					FileWriter tofile=new FileWriter(f);
					BufferedWriter out=new BufferedWriter(tofile);
					//将文本区中的内容写到文件缓冲区
					out.write(text.getText(),0,(text.getText()).length());
					//将缓冲区中的内容写到文件
					out.flush();
					tofile.close();
					out.close();
					}
	 			catch(FileNotFoundException e1){ }
				catch(IOException e1){ }
			}
		}
		//处理单击"删除"按钮的事件
		else if(e.getSource()==b_del)
		{
			DefaultMutableTreeNode node=(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
			String str=node.toString();
			if(node.isLeaf())
			{
				try{
					//把删除命令写到一个批处理文件中
					File f=new File(node.getParent().toString()+str+".txt");
					FileWriter tofile=new FileWriter("gxy.bat");
					BufferedWriter out=new BufferedWriter(tofile);
					String temp1="del"+f.getAbsoluteFile().toString();
					out.write(temp1,0,temp1.length());
					out.newLine();
					out.flush();
					tofile.close();
					out.close();
		 		  }
			   catch(IOException e1){ }
			}
			//调用执行删除文件的方法
			del();
		}
	}
	
	//删除文件
	void del()
	{
		//调用外部命令执行批处理程序
		try{
			Runtime ce=Runtime.getRuntime();
			ce.exec("gxy.bat");
			}catch(IOException e1){ }
	}
}


public class AppTree 
{
	 public static void main(String args[]) 
	 {
	 	Remember win=new Remember();
	 	win.pack();
	 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -