notepad.java

来自「主要是对于JAVA的编程的基本语言 希望能够帮得上你。」· Java 代码 · 共 640 行 · 第 1/2 页

JAVA
640
字号
package swing;

import java.awt.Color;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import javax.swing.ScrollPaneConstants;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.Document;

/**
 * Title: Notepad类<br>
 * Description: Swing简易记事本,能创建、打开和保存文本文件,
 *        具有剪切、复制和粘贴功能,能设置字体颜色以及字号<br>
 * Copyright:(c)2007 www.luzhou.net<br>
 * Company: 泸州职业技术学院电信系
 * @author 华卫
 * @version 1.00
 */

public class Notepad extends JFrame{
	
	/**
	 * 变量及常量定义部分
	 */
	
	//定义内容面板
	JPanel panel=(JPanel) getContentPane();
	
	//定义文本区
	JTextArea txaNote=new JTextArea(10,60);
	
	//定义滚动面板
	JScrollPane scrollPane=new JScrollPane(txaNote,
			ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
			ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
	
	//定义标签
	JLabel lblStatusbar=new JLabel("【JAVA语言程序设计】教学示例程序_授课教师:华卫");
	
	//定义图标	
	ImageIcon imgNew=new ImageIcon("swing/new.gif");
	ImageIcon imgOpen=new ImageIcon("swing/open.gif");
	ImageIcon imgSave=new ImageIcon("swing/save.gif");
	ImageIcon imgCut=new ImageIcon("swing/cut.gif");
	ImageIcon imgCopy=new ImageIcon("swing/copy.gif");
	ImageIcon imgPaste=new ImageIcon("swing/paste.gif");
	
	//定义工具栏
	JToolBar toolbar=new JToolBar();
	JButton btnNew=new JButton(imgNew);
	JButton btnOpen=new JButton(imgOpen);
	JButton btnSave=new JButton(imgSave);
	JButton btnCut=new JButton(imgCut);
	JButton btnCopy=new JButton(imgCopy);
	JButton btnPaste=new JButton(imgPaste);	
	
	//定义菜单栏
	JMenuBar mnbNote=new JMenuBar(); 
	
	//定义文件菜单
	JMenu mnuFile=new JMenu("文件(F)");
	JMenuItem mniNew=new JMenuItem("新建",imgNew);
	JMenuItem mniOpen=new JMenuItem("打开",imgOpen);
	JMenuItem mniSave=new JMenuItem("保存",imgSave);
	JMenuItem mniExit=new JMenuItem("退出");
	
	//定义编辑菜单
	JMenu mnuEdit=new JMenu("编辑(E)");
	JMenuItem mniCut=new JMenuItem("剪切",imgCut);
	JMenuItem mniCopy=new JMenuItem("复制",imgCopy);
	JMenuItem mniPaste=new JMenuItem("粘贴",imgPaste);
	JMenuItem mniDelete=new JMenuItem("删除");
	
	//定义设置菜单
	JMenu mnuSet=new JMenu("设置(S)");
	JMenu mnuForeColor=new JMenu("前景色");	
	ButtonGroup groupForeColor=new ButtonGroup();
	JRadioButtonMenuItem rmiBlack=new JRadioButtonMenuItem("黑色",true);
	JRadioButtonMenuItem rmiRed=new JRadioButtonMenuItem("红色",false);
	JRadioButtonMenuItem rmiBlue=new JRadioButtonMenuItem("蓝色",false);
	JMenu mnuFontName=new JMenu("字体");	
	ButtonGroup groupFontName=new ButtonGroup();
	JRadioButtonMenuItem rmiHT=new JRadioButtonMenuItem("黑体",true);
	JRadioButtonMenuItem rmiST=new JRadioButtonMenuItem("宋体",false);
	JRadioButtonMenuItem rmiLS=new JRadioButtonMenuItem("隶书",false);		
	JMenu mnuFontSize=new JMenu("字号");	
	ButtonGroup groupFontSize=new ButtonGroup();
	JRadioButtonMenuItem rmiBig=new JRadioButtonMenuItem("大号",true);
	JRadioButtonMenuItem rmiMiddle=new JRadioButtonMenuItem("中号",false);
	JRadioButtonMenuItem rmiSmall=new JRadioButtonMenuItem("小号",false);
	JCheckBoxMenuItem cmiWrap=new JCheckBoxMenuItem("自动换行",true);
	
	//定义帮助菜单
	JMenu mnuHelp=new JMenu("帮助(H)");
	JMenuItem mniHelp=new JMenuItem("帮助");
	JMenuItem mniAbout=new JMenuItem("关于");
	
	//定义文件选择器
	final JFileChooser fileChooser = new JFileChooser();
	
	//定义文件名
	String strFileName;
	
	//定义存放文件内容的字符串
	String strFileContent;	
	
	//定义系统剪贴板
	Clipboard clipBoard=Toolkit.getDefaultToolkit().getSystemClipboard();
	
	//定义屏幕宽度和高度
	int screenWidth=(int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
	int screenHeight=(int)Toolkit.getDefaultToolkit().getScreenSize().getHeight();
	
	//定义文件是否保存的标志变量
	boolean isSaved=true;
	
	//定义文档
	Document document=txaNote.getDocument();
	
	public static void main(String[] args) {		
		new Notepad("记事本");
	}	
	
	//构造方法	
	public Notepad(String string){			
		
		/**
		 * 设计用户界面:在窗口里设置菜单,在内容面板里添加非菜单组件,并设置其属性
		 */
		
		//调用父类构造方法,设置窗口标题
		super(string);		
				
		//往内容面板里添加滚动面板
		panel.add(scrollPane);		
		
		//往内容面板里添加标签
		panel.add(lblStatusbar,"South");	
		
		//往内容面板里添加工具栏
		panel.add(toolbar,"North");
		toolbar.add(btnNew);
		toolbar.add(btnOpen);
		toolbar.add(btnSave);
		toolbar.add(btnCut);
		toolbar.add(btnCopy);
		toolbar.add(btnPaste);					
		
		//在窗口里设置菜单栏
		setJMenuBar(mnbNote);	
		
		//添加文件菜单
		mnbNote.add(mnuFile); 
		mnuFile.setMnemonic(KeyEvent.VK_F);
		mnuFile.add(mniNew);
		mnuFile.add(mniOpen);
		mnuFile.add(mniSave);
		mnuFile.addSeparator();
		mnuFile.add(mniExit);
		
		//添加编辑菜单
		mnbNote.add(mnuEdit);
		mnuEdit.setMnemonic(KeyEvent.VK_E);
		mnuEdit.add(mniCut);
		mnuEdit.add(mniCopy);
		mnuEdit.add(mniPaste);
		mnuEdit.addSeparator();
		mnuEdit.add(mniDelete);
		
		//添加设置菜单
		mnbNote.add(mnuSet);
		mnuSet.setMnemonic(KeyEvent.VK_S);
		//前景色
		mnuSet.add(mnuForeColor);
		mnuForeColor.add(rmiBlack);
		mnuForeColor.add(rmiRed);
		mnuForeColor.add(rmiBlue);
		groupForeColor.add(rmiBlack);
		groupForeColor.add(rmiRed);
		groupForeColor.add(rmiBlue);
		//字体
		mnuSet.add(mnuFontName);
		mnuFontName.add(rmiHT);
		mnuFontName.add(rmiST);
		mnuFontName.add(rmiLS);
		groupFontName.add(rmiHT);
		groupFontName.add(rmiST);
		groupFontName.add(rmiLS);
		//字号
		mnuSet.add(mnuFontSize);
		mnuFontSize.add(rmiBig);
		mnuFontSize.add(rmiMiddle);
		mnuFontSize.add(rmiSmall);
		groupFontSize.add(rmiBig);
		groupFontSize.add(rmiMiddle);
		groupFontSize.add(rmiSmall);	
		//自动换行
		mnuSet.addSeparator();
		mnuSet.add(cmiWrap);
		
		//添加帮助菜单
		mnbNote.add(mnuHelp);
		mnuHelp.setMnemonic(KeyEvent.VK_H);
		mnuHelp.add(mniHelp);
		mnuHelp.add(mniAbout);
		
		//设置窗口属性
		setSize(800,600);		
		setLocation((screenWidth-getWidth())/2, (screenHeight-getHeight())/2); //让窗口在屏幕居中		
		
		//设置文本区属性	      
		txaNote.setFont(new Font("黑体",Font.PLAIN,30));		
		txaNote.setLineWrap(true);			
		
		//设置窗口可见
		setVisible(true);				
		
		/**
		 * 给组件注册监听器,并编写相应的事件处理程序
		 */
		
		//窗口关闭事件		
		addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e) {
				if(isSaved==false){
					int choice=JOptionPane.showConfirmDialog(null, "文件已修改,您是否要保存文件?", "记事本", JOptionPane.YES_NO_OPTION);
					if(choice==JOptionPane.YES_OPTION){
						saveFile();  //保存文件
					}else
						System.exit(0);	//退出系统					
				}else
					System.exit(0);	//退出系统
			}	
		});
		
		///////////////////////////////////////////////////////////////////////
		
		//文本区中的鼠标运动事件
		txaNote.addMouseMotionListener(new MouseMotionAdapter(){
			public void mouseMoved(MouseEvent e) {
				//判断文本区中是否选中了文本,以此决定“剪切”、“复制”和“删除”菜单项和工具按钮是否可用
				if(txaNote.getSelectedText()==null){
					mniCut.setEnabled(false);
					mniCopy.setEnabled(false);
					mniDelete.setEnabled(false);					
					btnCut.setEnabled(false);
					btnCopy.setEnabled(false);					
				}else{
					mniCut.setEnabled(true);
					mniCopy.setEnabled(true);
					mniDelete.setEnabled(true);
					btnCut.setEnabled(true);
					btnCopy.setEnabled(true);
				}	
				//判断剪贴板里是否有内容,以此决定“粘贴”菜单项和工具按钮是否可用				
				Transferable contents=clipBoard.getContents(this); //从剪贴板获取可传输数据对象
				if(contents==null){
					mniPaste.setEnabled(false);
					btnPaste.setEnabled(false);
				}
				else{
					mniPaste.setEnabled(true);
					btnPaste.setEnabled(true);
				}				
			}			
		});		
		
		//文档内容发生变化事件
		document.addDocumentListener(new DocumentListener(){
			public void insertUpdate(DocumentEvent e) {
				isSaved=false;					
			}

			public void removeUpdate(DocumentEvent e) {				
				isSaved=false;
			}
			
			public void changedUpdate(DocumentEvent e) {				
				isSaved=false;				
			}						
		});
		
		//////////////////////////////////////////////////////////////////////
		

⌨️ 快捷键说明

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