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

📄 jnotepad.java

📁 Java程序实现的Notepad程序
💻 JAVA
字号:
// Problem 5.1	: JNotepad.java
// Author	: Dai Zhenlong
// Date		: 2007-07-20

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

public class JNotepad{
	private static JMenuBar mb;
	private static JTextArea ta;
	private static JFrame f;
	private static JFileChooser fc;
	private static JScrollPane sp;
	private static String fileName;
	private static boolean isOpened;
	private static Font ft;
	public void createMenuBar(){
	//创建菜单栏
	mb = new JMenuBar();
	JMenu mFile = new JMenu("文件");
		JMenuItem miNew = new JMenuItem("新建",KeyEvent.VK_N);
		miNew.addActionListener(new MenuListener());
		JMenuItem miOpen = new JMenuItem("打开");
		miOpen.addActionListener(new MenuListener());
		JMenuItem miSave = new JMenuItem("保存");
		miSave.addActionListener(new MenuListener());
		JMenuItem miSaveAs = new JMenuItem("另存为");
		miSaveAs.addActionListener(new MenuListener());
		JMenuItem miExit = new JMenuItem("退出");
		miExit.addActionListener(new MenuListener());
		mFile.add(miNew); mFile.add(miOpen); mFile.addSeparator();
		mFile.add(miSave); mFile.add(miSaveAs); mFile.addSeparator();
		mFile.add(miExit);
	JMenu mEdit = new JMenu("编辑");
		JMenuItem miCut = new JMenuItem("剪切");
		miCut.addActionListener(new MenuListener());
		JMenuItem miCopy = new JMenuItem("复制");
		miCopy.addActionListener(new MenuListener());
		JMenuItem miPaste = new JMenuItem("粘贴");
		miPaste.addActionListener(new MenuListener());
		JMenuItem miDelete = new JMenuItem("删除");
		miDelete.addActionListener(new MenuListener());
		mEdit.add(miCut);mEdit.add(miCopy);
		mEdit.add(miPaste);mEdit.add(miDelete);
	JMenu mFormat = new JMenu("格式");
		JMenuItem miFont = new JMenuItem("字体");
		miFont.addActionListener(new MenuListener());
		mFormat.add(miFont);
	JMenu mHelp = new JMenu("帮助");
		JMenuItem miAbout = new JMenuItem("关于记事本");
		miAbout.addActionListener(new MenuListener());
		mHelp.add(miAbout);
	mb.add(mFile); mb.add(mEdit); 
	mb.add(mFormat); mb.add(mHelp);
	
	//文本输入区
	ta = new JTextArea(20,40);
	ta.setLineWrap(true);
	ta.setWrapStyleWord(true);
	sp = new JScrollPane(ta);
	
	//文件选择器
	fc = new JFileChooser();
	
	ft = null;
	
	isOpened = false;
	}
	
	public static void main (String args[]){
		try{
			UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
		}catch (Exception e){}
		f = new JFrame ("JNotePad");
		JNotepad app = new JNotepad();
		app.createMenuBar();
		f.setJMenuBar (mb);
		f.getContentPane().add(sp);
		f.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
		f.setLocation(500,300);
		f.pack();
		f.setVisible(true);
	}
	
	public void saveText(String fName){
		try{
		FileOutputStream fos = new FileOutputStream(fName);
		BufferedWriter bw = new BufferedWriter (new OutputStreamWriter(fos));
		bw.write(ta.getText());
		bw.close();
		}catch(IOException e){}
	}
	
	class MenuListener implements ActionListener{
		public void actionPerformed(ActionEvent e){
			if (e.getActionCommand() == "退出"){
				if (isOpened == false && ta.getText() == null){}
				else{
					boolean noFileName = false;
					if (fileName == null){
						fileName = "无标题"; noFileName = true;
					}
					Object [] options = {"是","否","取消"};
					int n = JOptionPane.showOptionDialog(f,"保存到"+fileName,"JNotePad",
						JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,
						null,options,options[2]);
					if (n == 0){
						if (noFileName){
							int returnVal = fc.showOpenDialog(f);
							if (returnVal == JFileChooser.APPROVE_OPTION){
								File fl = fc.getSelectedFile();
								fileName = fl.getAbsolutePath();
							}
						}
						saveText(fileName);
					}
					else if (n == 1){}
					else if (n == 2){return;}
				}
				System.exit(1);
			}
			else if (e.getActionCommand() == "打开"){
				if (isOpened == true){
					boolean noFileName = false;
					boolean noNeedSave = false;
					if (fileName == null){
						if (ta.getText().length() == 0)
							noNeedSave = true;
						else{
							fileName = "无标题";
							noFileName = true;
						}
					}
					if (!noNeedSave){
					Object [] options = {"是","否","取消"};
					int n = JOptionPane.showOptionDialog(f,"保存到"+fileName,"JNotePad",
						JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,
						null,options,options[2]);
					if (n == 0){
						if (noFileName){
							int returnVal = fc.showOpenDialog(f);
							if (returnVal == JFileChooser.APPROVE_OPTION){
								File fl = fc.getSelectedFile();
								fileName = fl.getAbsolutePath();
							}
						}
						saveText(fileName);
						ta.setText("");
					}
					else if (n == 1){}
					else if (n == 2){return;}
					}
				}
				int returnVal = fc.showOpenDialog(f);
				if (returnVal == JFileChooser.APPROVE_OPTION){
					File fl = fc.getSelectedFile();
					fileName = fl.getAbsolutePath();
					isOpened = true;
					try{
					FileInputStream fis = new FileInputStream(fileName);
					BufferedReader br = new BufferedReader (new InputStreamReader(fis));
					String s = br.readLine();
					ta.setText(s+"\r\n");
					while((s = br.readLine()) != null)
						ta.append(s+"\r\n");
					br.close();
					}catch(IOException exp){}
				}
			}
			else if (e.getActionCommand() == "新建"){
				if (isOpened == true){
					boolean noFileName = false;
					if (fileName == null){
						if (ta.getText().length() == 0)
							return;
						else{
							fileName = "无标题";
							noFileName = true;
						}
					}
					Object [] options = {"是","否","取消"};
					int n = JOptionPane.showOptionDialog(f,"保存到"+fileName,"JNotePad",
						JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,
						null,options,options[2]);
					if (n == 0){
						if (noFileName){
							int returnVal = fc.showOpenDialog(f);
							if (returnVal == JFileChooser.APPROVE_OPTION){
								File fl = fc.getSelectedFile();
								fileName = fl.getAbsolutePath();
							}
						}
						saveText(fileName);
						ta.setText("");
					}
					else if (n == 1){
						ta.setText("");
						isOpened = true;
						fileName = null;	
					}
					else if (n == 2){return;}
				}
				else{
					ta.setText("");
				}
				isOpened = true;
				fileName = null;
			}
			else if (e.getActionCommand() == "保存"){
				if (fileName == null){
					int returnVal = fc.showOpenDialog(f);
					if (returnVal == JFileChooser.APPROVE_OPTION){
						File fl = fc.getSelectedFile();
						fileName = fl.getAbsolutePath();
					}
				}
				saveText(fileName);
			}
			else if (e.getActionCommand() == "另存为"){
				int returnVal = fc.showOpenDialog(f);
				if (returnVal == JFileChooser.APPROVE_OPTION){
					File fl = fc.getSelectedFile();
					fileName = fl.getAbsolutePath();
				}
				saveText(fileName);
			}
			else if (e.getActionCommand() == "剪切"){
				ta.cut();
			}
			else if (e.getActionCommand() == "复制"){
				ta.copy();
			}
			else if (e.getActionCommand() == "粘贴"){
				ta.paste();
			}
			else if (e.getActionCommand() == "删除"){
				String content = ta.getText();
				String head = content.substring(0,ta.getSelectionStart());
				String tail = content.substring(ta.getSelectionEnd());
				content = head + tail;
				ta.setText(content);
			}
			else if (e.getActionCommand() == "字体"){
				ft = NwFontChooserS.showDialog(f,null,ft);
				ta.setFont(ft);
			}
			else if (e.getActionCommand() == "关于记事本")
				JOptionPane.showMessageDialog(f,"作者:戴振龙\n日期:2007-07-20","关于记事本",JOptionPane.INFORMATION_MESSAGE);
		}
	}
}

⌨️ 快捷键说明

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