课外天地 李树青学习天地Java程序语言课件 → 程序代码——记事本


  共有17092人关注过本帖树形打印复制链接

主题:程序代码——记事本

帅哥哟,离线,有人找我吗?
admin
  1楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 管理员
等级:管理员 帖子:1940 积分:26616 威望:0 精华:34 注册:2003/12/30 16:34:32
程序代码——记事本  发帖心情 Post By:2009/5/7 19:23:33 [只看该作者]

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JColorChooser;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ScrollPaneConstants;

//测试类
public class Exec {
    public static void main(String[] args) {
        // 创建窗体类变量
        DemoWindow dw = new DemoWindow("记事本");

        // 将窗体的宽度和高度分别设置为屏幕宽度和屏幕高度的1/3,左上角位置也设置为屏幕宽度和屏幕高度的1/3处
        Toolkit theKit = dw.getToolkit();
        Dimension wndSize = theKit.getScreenSize();
        dw.setBounds(wndSize.width / 3, wndSize.height / 3, wndSize.width / 3,
                wndSize.height / 3);

        // 点击关闭按钮可以退出程序
        dw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 设置窗体为可见
        dw.setVisible(true);
    }
}

// 记事本窗体
class DemoWindow extends JFrame implements ActionListener {
    // 显示文本文件内容的文本区
    JTextArea textArea = new JTextArea();

    // 设置文本区的滚动条
    int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
    int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
    JScrollPane jsp = new JScrollPane(textArea, v, h);

    // 菜单
    JMenuBar menuBar = new JMenuBar();
    JMenu fileMenu = new JMenu("文件");
    JMenuItem newItem = new JMenuItem("新建");
    JMenuItem openItem = new JMenuItem("打开");
    JMenuItem saveItem = new JMenuItem("保存");
    JMenuItem saveAsItem = new JMenuItem("另存为");
    JMenuItem exitItem = new JMenuItem("退出");
    JMenu editMenu = new JMenu("编辑");
    JMenuItem selectItem = new JMenuItem("全选");
    JMenuItem foreColor = new JMenuItem("前景色");
    JMenuItem backColor = new JMenuItem("背景色");

    // 当前打开的文件名称
    String fileName = null;

    // 构造函数
    public DemoWindow(String title) {
        super(title);
        
        // 添加菜单
        fileMenu.add(newItem);
        fileMenu.add(openItem);
        fileMenu.addSeparator();
        fileMenu.add(saveItem);
        fileMenu.add(saveAsItem);
        fileMenu.addSeparator();
        fileMenu.add(exitItem);
        editMenu.add(selectItem);
        editMenu.addSeparator();
        editMenu.add(foreColor);
        editMenu.add(backColor);
        menuBar.add(fileMenu);
        menuBar.add(editMenu);
        setJMenuBar(menuBar);

        // 添加文本区
        add(jsp);

        // 添加事件监听器
        newItem.addActionListener(this);
        openItem.addActionListener(this);
        saveItem.addActionListener(this);
        saveAsItem.addActionListener(this);
        exitItem.addActionListener(this);
        selectItem.addActionListener(this);
        foreColor.addActionListener(this);
        backColor.addActionListener(this);
    }

    // 响应单击菜单
    public void actionPerformed(ActionEvent e) {
        JMenuItem eventSource = (JMenuItem) e.getSource();
        // 处理新建文件
        if (eventSource == newItem) {
            textArea.setText("");
        }
        // 处理打开文件
        else if (eventSource == openItem) {
            readFromFile();
        }
        // 处理保存文件
        else if (eventSource == saveItem) {
            writeToFile(fileName);
        }
        // 处理另存为文件
        else if (eventSource == saveAsItem) {
            writeToFile(null);
        }
        // 处理退出程序
        else if (eventSource == exitItem) {
            System.exit(0);
        }
        // 处理文本全选
        else if (eventSource == selectItem) {
            textArea.selectAll();
        }
        // 处理设置前景色
        else if (eventSource == foreColor) {
            Color color = JColorChooser.showDialog(this, "前景色", textArea
                    .getForeground());
            if (color != null) {
                textArea.setForeground(color);
            }
        }
        // 处理设置背景色
        else if (eventSource == backColor) {
            Color color = JColorChooser.showDialog(this, "背景色", textArea
                    .getBackground());
            if (color != null) {
                textArea.setBackground(color);
            }
        }
    }

    // 保存文件的函数
    private void writeToFile(String file) {
        // 如果没有文件名称,打开对话框要求选择文件名
        if (file == null) {
            // getFileName参数为true显示保存对话框
            fileName = getFileName(true);
        }

        if (fileName != null) {
            try {
                // 写入文件
                File writeFile = new File(fileName);
                FileWriter writeOut = new FileWriter(writeFile);
                writeOut.write(textArea.getText());
                writeOut.close();
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }
    }

    // 读取文件的函数
    private void readFromFile() {
        // 打开对话框要求选择文件
        // getFileName参数为false显示打开对话框
        fileName = getFileName(false);
        
        if (fileName != null) {
            try {
                // 读取文件
                File readFile = new File(fileName);
                FileReader readIn = new FileReader(readFile);
                int size = (int) readFile.length();
                int charsRead = 0;
                char[] content = new char[size];
                while (readIn.ready())
                    charsRead += readIn.read(content, charsRead, size
                            - charsRead);
                readIn.close();
                textArea.setText(new String(content, 0, charsRead));
            } catch (IOException e) {
                System.out.println(e.getMessage());
            }
        }
    }

    // 显示文件选择对话框,参数为true,显示保存对话框,参数为false,显示打开对话框
    private String getFileName(boolean isWrite) {
        String fileName = null;
        JFileChooser jfc = new JFileChooser();
        int result = -1;
        if (!isWrite)
            result = jfc.showOpenDialog(this);
        else
            result = jfc.showSaveDialog(this);
        if (result == JFileChooser.APPROVE_OPTION)
            fileName = jfc.getSelectedFile().getPath();
            
        // 返回选择的文件名
        return fileName;
    }

}

[此贴子已经被作者于2010-12-12 08:30:47编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Werwolf亦狼
  2楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:12 积分:302 威望:0 精华:0 注册:2011/3/6 8:39:40
  发帖心情 Post By:2011/3/7 15:57:04 [只看该作者]

这个不错    弄下来研究研究

 回到顶部