记事本java源代码

更新时间:2023-06-11 06:54:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

用java编写的记事本源代码

import java.awt.BorderLayout;

import java.awt.Font;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.InputEvent;

import java.awt.event.ItemEvent;

import java.awt.event.ItemListener;

import java.awt.event.KeyEvent;

import java.awt.event.WindowEvent;

import java.awt.event.WindowListener;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.FileReader;

import java.io.IOException;

import javax.swing.JCheckBoxMenuItem;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JOptionPane;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.KeyStroke;

/**

* TXT记事本

*

* @author Administrator

*

*/

public class Notepad implements WindowListener, ActionListener, ItemListener {

/**

* 本程序的主界面框体 */ private JFrame frame; /** * 记事本名 */ private String txtName = "无标题"; /** * 文本区域

用java编写的记事本源代码

*/

private JTextArea center = new JTextArea();

/**

* 滚动条

*/

private JScrollPane pane = new JScrollPane(center);

/**

* 菜单条

*/

private JMenuBar menuBar = new JMenuBar();

/**

* 菜单 文件,系统,设置字体

*/

private JMenu fileMenu, systemMenu, setFont;

/**

* 菜单项 新建,打开,保存,另存,退出,字号变大,字号变小,关于,宋体,楷体,黑体,隶书

*/

private JMenuItem newItem, openItem, saveItem, saveAsItem, exitItem,

larger, smaller, about,songItem,kaiItem,heiItem,liItem;

/**

* 自动换行

*/

private JCheckBoxMenuItem autoChangeLine;

private boolean judge = false; // 判断是否需要自动换行 /** * 文件选择器 */ private JFileChooser chooser = new JFileChooser(); /** * 当前文件 */ private File currentFile = null; /** * 当新建或打开或退出时 判断文本区内容是否改变 */ private String compareTxt; /** * 当前字体 */ private Font font; /** * 当前字号 */

用java编写的记事本源代码

private int fontSize; /** * 当前字体的名字 */ private String fontName; /** * 初始化框体 */ private void initMainFrame() { if (frame == null) { // 创建窗体组件 frame = new JFrame(); } } // 窗体标题 frame.setTitle(txtName + "\t"+"记事本"); // 设置位置、尺寸 int width = 500; int height = 500; // 获取屏幕的宽和高 frame.setSize(width, height); // 设置右上角关闭按钮的默认操作 frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); frame.addWindowListener(this); frame.setLocationRelativeTo(null);//居中 /** * 显示框体 */ private void show() { frame.setVisible(true); } /** * 框体初始化 */ private void initComponent() { // 设置容器型组件的布局管理器 frame.setLayout(new BorderLayout()); // 初始化菜单 fileMenu = new JMenu("文件(F)"); fileMenu.setMnemonic(KeyEvent.VK_F); systemMenu = new JMenu("系统(S)");

用java编写的记事本源代码

systemMenu.setMnemonic(KeyEvent.VK_S);

setFont = new JMenu("设置字体");

// 初始化菜单项

newItem = new JMenuItem("新建");

newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,

InputEvent.CTRL_DOWN_MASK));

newItem.addActionListener(this);

openItem = new JMenuItem("打开");

openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,

InputEvent.CTRL_DOWN_MASK));

openItem.addActionListener(this);

saveItem = new JMenuItem("保存");

saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,

InputEvent.CTRL_DOWN_MASK));

saveItem.addActionListener(this);

saveAsItem = new JMenuItem("另存为(A)");

saveAsItem.setMnemonic(KeyEvent.VK_A);

saveAsItem.addActionListener(this);

exitItem = new JMenuItem("退出(X)");

exitItem.setMnemonic(KeyEvent.VK_X);

exitItem.addActionListener(this);

larger = new JMenuItem("放大");

larger.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_UP,

InputEvent.CTRL_DOWN_MASK));

larger.addActionListener(this);

smaller = new JMenuItem("缩小"); smaller.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, InputEvent.CTRL_DOWN_MASK)); smaller.addActionListener(this); autoChangeLine = new JCheckBoxMenuItem("自动换行(W)"); autoChangeLine.setMnemonic(KeyEvent.VK_W); autoChangeLine.addItemListener(this); about = new JMenuItem("关于(A)"); about.setMnemonic(KeyEvent.VK_A); about.addActionListener(this); songItem=new JMenuItem("宋体"); songItem.addActionListener(this); kaiItem=new JMenuItem("楷体"); kaiItem.addActionListener(this); heiItem=new JMenuItem("黑体"); heiItem.addActionListener(this); liItem=new JMenuItem("隶书"); liItem.addActionListener(this);

用java编写的记事本源代码

} /** // 文件菜单 fileMenu.add(newItem); fileMenu.add(openItem); fileMenu.add(saveItem); fileMenu.add(saveAsItem); fileMenu.addSeparator(); fileMenu.add(exitItem); // 系统菜单 systemMenu.add(setFont); systemMenu.add(larger); systemMenu.add(smaller); systemMenu.add(autoChangeLine); systemMenu.addSeparator(); systemMenu.add(about); //设置字体菜单 setFont.add(songItem); setFont.add(kaiItem); setFont.add(heiItem); setFont.add(liItem); // 菜单条 menuBar.add(fileMenu); menuBar.add(systemMenu); // 框体添加文件区和菜单条 frame.add(pane); frame.setJMenuBar(menuBar); //初始化字体 center.setFont(font=new Font("宋体",0,12)); * 构造器 */ public Notepad() { initMainFrame(); initComponent(); } /** * 主函数 * * @param args */ public static void main(String[] args) { new Notepad().show();

用java编写的记事本源代码

} /** * 自动换行方法 */ private void autoChangeLine() { if (judge) { //judge为真 即需要自动换行 center.setLineWrap(true); } /** * 文件另存的方法 */ private void saveAs() {

int option = chooser.showSaveDialog(frame); //调出文件保存选择器

if (option == JFileChooser.APPROVE_OPTION) {

currentFile= chooser.getSelectedFile();

FileOutputStream fos = null;

int op = 0;

try {

if (!currentFile.exists()) { // 文件不存在,则新建一个

currentFile.createNewFile(); fos = new FileOutputStream(currentFile); // 写入文件 String content = center.getText(); fos.write(content.getBytes()); // 刷新缓存 fos.flush(); } else { //judge为假 不需要自动换行 center.setLineWrap(false); } 文件

允许写入!");

存文件 } else { // 文件存在 if (!currentFile.canWrite()) { //文件为只读类型 JOptionPane.showMessageDialog(frame, "此文件是只读类型,不 } else { //文件不是只读类 op = JOptionPane.showConfirmDialog(frame, "文件已经存在,是否要覆盖?", "确认?", JOptionPane.YES_NO_CANCEL_OPTION); } if (op == JOptionPane.YES_OPTION) {//用户选择覆盖时,用输出流保

用java编写的记事本源代码

"); } } // 建立输出流 fos = new FileOutputStream(currentFile); // 写入文件 String content = center.getText(); fos.write(content.getBytes()); // 刷新缓存 fos.flush(); } } } catch (IOException e) { e.printStackTrace(); } finally { } // 关闭流 if (fos != null) { try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } /** * 文件保存的方法 */ private void save() { if (currentFile == null) {// 新建的文件 saveAs(); //另存 } else {// 已存在的文件 if (!currentFile.canWrite()) { //文件为只读 JOptionPane.showMessageDialog(frame, "此文件是只读类型,不允许写入!

saveAs(); //另存

} else { //文件不为只读,用输出流保存文件

FileOutputStream fos = null;

try {

// 建立输出流

fos = new FileOutputStream(currentFile);

// 写入文件

String content = center.getText();

用java编写的记事本源代码

} /** } } // 刷新缓存 fos.flush(); } catch (IOException e1) { e1.printStackTrace(); } finally { // 关闭流 if (fos != null) { try { fos.close(); } catch (IOException e1) { e1.printStackTrace(); } } } * 文件未改变时 打开的方法 */ private void open() { int option = chooser.showOpenDialog(frame); //调出文件选择器 if (option == JFileChooser.APPROVE_OPTION) { currentFile = chooser.getSelectedFile(); //获得选择的文件 txtName = chooser.getName(currentFile); //获得选择文件的名字 frame.setTitle(txtName + "-记事本"); //在frame上显示 文件名字的 标题 FileReader fi = null; //用字符输入流来显示文件的内容 try { fi = new FileReader(currentFile); String sum = ""; char[] buff = new char[400]; int count = -1; while ((count = fi.read(buff)) != -1) { String once = new String(buff, 0, count); sum += once; } center.setText(sum); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } finally {

用java编写的记事本源代码

} } } fi.close(); } catch (IOException e1) { e1.printStackTrace(); } /** * 文件未改变时 新建的方法 */ private void newTxt() { } /** currentFile = null; //设置当前文件为空 txtName = "无标题"; //当前文件名为“无标题” frame.setTitle(txtName + "-记事本"); center.setText(null); //将文本区置空

* 判断文件是否改变

*

* @return

*/

@SuppressWarnings("null")

private boolean judge() {

boolean judgeTxt = false;// 默认为假,文件没有改变

if (currentFile == null) {// 文件不存在,即文件是新建的时候

if (!compareTxt.equals("")) { // 文本区有字符串存在时,即文件已经改变 judgeTxt = true;

}

} else {// 文件已经存在, 用原来文件的内容和当前显示的内容做比较, 如果相同则文件没有改变,如果不同,则文件改变了

String sum = null;

String compare = null;

compare += center.getText();//获得文本区内容

FileReader fi = null; //用字符流得到原来文件的内容

try {

fi = new FileReader(currentFile);

char[] buff = new char[400];

int count = -1;

用java编写的记事本源代码

} String once = new String(buff, 0, count); sum += once; } } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } finally { try { fi.close(); } catch (IOException e1) { e1.printStackTrace(); } } if (!compare.equals(sum)) {//原文件内容与当前文本区内容不同 judgeTxt = true; } } return judgeTxt; public void windowActivated(WindowEvent e) { } public void windowClosed(WindowEvent e) { } public void windowClosing(WindowEvent e) {//关闭按钮的监听 compareTxt = center.getText(); //获得文本区内容 if (judge()) { //文件内容已经改变了 int option = JOptionPane.showConfirmDialog(frame, "文件内容已经改变,是否要保存文件?", "记事本", JOptionPane.YES_NO_CANCEL_OPTION); if (option == JOptionPane.YES_OPTION) { // 选择了 是 save(); System.exit(0); } else if (option == JOptionPane.NO_OPTION) { // 选择了 否 System.exit(0);

用java编写的记事本源代码

} } else {//文本区内容没有改变 System.exit(0); } public void windowDeactivated(WindowEvent e) { } public void windowDeiconified(WindowEvent e) { } public void windowIconified(WindowEvent e) { } public void windowOpened(WindowEvent e) { } public void actionPerformed(ActionEvent e) { Object source = e.getSource(); if (source == newItem) { // 选择了新建 compareTxt = center.getText();//获得文本区内容 if (judge()) {// 文件内容已经被改变 int option = JOptionPane.showConfirmDialog(frame, "文件内容已经改变,是否要保存文件?", "记事本", JOptionPane.YES_NO_CANCEL_OPTION); if (option == JOptionPane.YES_OPTION) { // 选择了 是 save(); newTxt(); } else if (option == JOptionPane.NO_OPTION) { // 选择了 否 newTxt(); } } else {// 文件内容未改变 newTxt(); } } else if (source == openItem) {

用java编写的记事本源代码

// 选择了打开 compareTxt = center.getText();//获得文本区内容 if (judge()) {// 文件内容已经被改变 int option = JOptionPane.showConfirmDialog(frame, "文件内容已经改变,是否要保存文件?", "记事本", JOptionPane.YES_NO_CANCEL_OPTION); if (option == JOptionPane.YES_OPTION) { // 选择了 是 save(); // 另存 open(); // 打开 } else if (option == JOptionPane.NO_OPTION) { // 选择了 否 open(); // 打开 } } else {// 文件内容未改变 open(); } } else if (source == saveItem) { // 选择的保存 save(); } else if (source == saveAsItem) { // 选择了另存 saveAs(); } else if (source == exitItem) { // 选择了退出 compareTxt = center.getText();//获得文本区内容 if (judge()) { // 文件内容已经改变 int option = JOptionPane.showConfirmDialog(frame, "文件内容已经改变,是否要保存文件?", "记事本", JOptionPane.YES_NO_CANCEL_OPTION); if (option == JOptionPane.YES_OPTION) { // 选择了 是 save(); System.exit(0); } else if (option == JOptionPane.NO_OPTION) { // 选择了 否 System.exit(0); } } else { // 文件内容没有改变 System.exit(0); }

用java编写的记事本源代码

} } }else if (source == larger) { font=center.getFont(); fontSize=font.getSize(); fontName=font.getName(); fontSize++; font=new Font(fontName,0,fontSize); center.setFont(font); } else if (source == smaller) { font=center.getFont(); fontSize=font.getSize(); fontName=font.getName(); fontSize--; font=new Font(fontName,0,fontSize); center.setFont(font); } else if (source == about) { JOptionPane.showMessageDialog(frame, "version:1.0\n" + " 谢谢您的使用!\n" + "2011年8月3日"); }else if(source==songItem){ center.setFont(font=new Font("宋体",0,12)); }else if(source==kaiItem){ fontSize=font.getSize(); font=new Font("楷体",0,fontSize); center.setFont(font); }else if(source==heiItem){ fontSize=font.getSize(); font=new Font("黑体",0,fontSize); center.setFont(font); }else if(source==liItem){ fontSize=font.getSize(); font=new Font("隶书",0,fontSize); center.setFont(font); } // 自动换行按钮的监听事件 public void itemStateChanged(ItemEvent e) { judge = !judge; autoChangeLine(); }

本文来源:https://www.bwwdw.com/article/9lo1.html

Top