Java Swing编程

JAVA编写的记事本

package demo1;

import java.io.*;
import java.awt.BorderLayout;
import java.awt.event.*;

import mypackage.FileHelper;
import mypackage.WriteStyle;

import javax.swing.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.plaf.FileChooserUI;
public class UIdemo02 extends JFrame implements ActionListener
{    
	//窗口初始大小
	int width = 500,height = 400;
	JPanel panel;    
	JMenuBar bar;    
	JMenu fileMenu,editMenu,helpMenu;    
	JMenuItem OpenO,NewN,SaveS,SaveasA,CutT,CopyC,PasteP,AboutA; 
	JTextArea textArea = null;    File tempFile = null;   
	JScrollPane jscroll;
	public UIdemo02()
	{    
		//构造方法        
		this.setTitle("新概念记事本V1.0版本");
		this.setSize(width,height);  
		//获得窗口面板容器
		panel = (JPanel)this.getContentPane();       
		//创建窗口菜单条
		bar = new JMenuBar();     
		fileMenu = new JMenu("文件F");//顶层菜单    
		fileMenu.setMnemonic('F'); //设定快捷键操作   
		editMenu = new JMenu("编辑E");     
		editMenu.setMnemonic('E');      
		helpMenu = new JMenu("帮助H");     
		helpMenu.setMnemonic('H');  
		
		//创建子菜单项
		OpenO = new JMenuItem("打开O");     
		OpenO.setMnemonic('O');       
		NewN = new JMenuItem("新建N");  
		NewN.setMnemonic('N');       
		SaveS = new JMenuItem("保存S");      
		SaveS.setMnemonic('S');      
		SaveasA = new JMenuItem("另存A");      
		SaveasA.setMnemonic('A');      
		CutT = new JMenuItem("剪切C");     
		CutT.setMnemonic('t');       
		CopyC = new JMenuItem("复制C");    
		CopyC.setMnemonic('C');      
		PasteP = new JMenuItem("粘贴P");      
		PasteP.setMnemonic('P');       
		AboutA = new JMenuItem("关于A");     
		AboutA.setMnemonic('A');       
		fileMenu.add(OpenO);       
		fileMenu.add(NewN);        
		fileMenu.add(SaveS);   
		fileMenu.add(SaveasA);    
		//添加菜单到工具条
		bar.add(fileMenu);       
		editMenu.add(CutT);  
		editMenu.add(CopyC);  
		editMenu.add(PasteP);    
		bar.add(editMenu);     
		helpMenu.add(AboutA);    
		bar.add(helpMenu);  
		
		//为文本框添加滚动条
		JPanel jpanel=new JPanel(new BorderLayout());
		jpanel.setBounds(10, 100, 200, 100);
		textArea = new JTextArea();
		textArea.setEditable(false);//不能编辑
		jscroll=new JScrollPane(textArea);
		jpanel.add(jscroll);
		panel.add("North",bar);       
		panel.add("Center", jpanel); 
		this.InitListener();
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
		setVisible(true);  
		
		NewS_click(null);
     
    }    
	
	/**
	 * 初始化窗体控件监听器
	 */
	private void InitListener()
	{
		//打开
		OpenO.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				OpenO_click(arg0);
			}
		});
		
		//新建
		NewN.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				NewS_click(arg0);
			}
		});
		
		//保存
		SaveS.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				SaveS_click(e);
			}
		});
		//另存
		SaveasA.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				SaveasA_click(e);
			}
		});
		AboutA.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				AboutA_click(arg0);
			}
		});
	}
	
	
	
	//打开事件处理
	public void OpenO_click(ActionEvent evt)
	{
		//文件打开对话框
		JFileChooser jfc=new JFileChooser();
		jfc.setDialogTitle("打开记事文件");
		jfc.showOpenDialog(panel);
		tempFile=jfc.getSelectedFile();
		textArea.setText(FileHelper.ReadAllText(tempFile.getAbsolutePath()));
		textArea.setEditable(true);
	}
	//新建事件处理
	public void NewS_click(ActionEvent evt)
	{
		//处理新建
		tempFile=null;
		textArea.setEditable(true);   
		textArea.setText(null);   
	}
	
	//保存事件处理
	public void SaveS_click(ActionEvent evt)
	{
		//检查是否有数据保存
		if(textArea.getText().length()<=0)
		{
			JOptionPane.showMessageDialog(panel,"没有数据可用于保存");
			return;
		}
		//覆盖、创建标识
		int flag=0;
		//是否打开文件
		if(tempFile==null)
		{
			//文件打开对话框
			JFileChooser jfc=new JFileChooser();
			jfc.setDialogTitle("保存记事文件");
			jfc.showSaveDialog(panel);
			tempFile=jfc.getSelectedFile();
			flag=1;//新建
		}
		WriteStyle wstyle=flag==0?WriteStyle.overlaid:WriteStyle.create;
		//将数据存入磁盘文件
		boolean ret=FileHelper.WriteAllText(textArea.getText(), tempFile.getAbsolutePath(),wstyle);
		if(ret==false)
		{
			JOptionPane.showMessageDialog(panel,"数据保存失败");
		}
	}
	
	//另存事件处理
	public void SaveasA_click(ActionEvent evt)
	{
		//检查是否有数据保存
		if(textArea.getText().length()<=0)
		{
			JOptionPane.showMessageDialog(panel,"没有数据可用于保存");
			return;
		}
		//选择文件
		JFileChooser jfc=new JFileChooser();
		jfc.setDialogTitle("另存为");
		jfc.showSaveDialog(panel);
		tempFile=jfc.getSelectedFile();
		String filepath=tempFile.getAbsolutePath();
		//选择文件是否已经存在
		if(FileHelper.FileExists(filepath))
		{
			int ret= JOptionPane.showConfirmDialog(panel, "文件已存在,是否覆盖?");
			JOptionPane.showMessageDialog(null, ret);
			if(ret==0)
			{
				//覆盖
				boolean bret= FileHelper.WriteAllText(textArea.getText(), filepath, WriteStyle.create);
				if(!bret)
				{
					JOptionPane.showConfirmDialog(panel, "数据保存失败");
				}
			}
		}
		
		//将数据存入磁盘文件
		boolean bret=FileHelper.WriteAllText(textArea.getText(), filepath, WriteStyle.create);
		if(!bret)
		{
			JOptionPane.showConfirmDialog(panel, "数据保存失败");
		}
	}
	
	//关于事件处理
	public void AboutA_click(ActionEvent evt)
	{
		tempFile=null;
		textArea.setText("新概念记事本V1.0\nQQ:1533696518\n编写思路参考至http://zhidao.baidu.com/question/217267049.html");
		textArea.setEditable(false);
	}

	public void actionPerformed(ActionEvent event)
	{  
		
	}
	public static void main(String []args)
	{                  //主函数      
		new UIdemo02(); 
	}
}


其中用到的FileHelper类源码在文章列表中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值