读书人

记事簿代码(部分未完成)

发布时间: 2012-10-16 09:57:37 作者: rapoo

记事本代码(部分未完成)

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.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JDialog;
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.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.SwingConstants;

public class Notepad extends JFrame{
??? JMenuItem newFile,open,save,saveAs,exit;
??? JMenuItem revocation,cut,copy,paste,delete,find,findNext,replace,date;
??? JMenuItem script;
??? JMenuItem zhuangTai;
??? JMenuItem zhuTi,helpZhuTi;
???
??? JTextArea jta;
??? JScrollPane jsp;
??? JFileChooser fileChooser;
??? JPopupMenu popUpMenu;
??? JButton jb,jb1;
??? JTextField jt,jt1;
??? JLabel stateBar;
??? int i = 0;
??? int u = 0;
??? //构造方法
??? public Notepad() {
??? ??? super("新建文本文件");
??? ??? this.setLocation(300,150);
??? ??? this.setSize(600,500);
??? ??? myFrame();
??? ??? this.setVisible(true);
??? }
??? public void myFrame() {
??? ??? //文本编辑区域
??? ??? jta = new JTextArea();
??? ??? jta.setFont(new Font("宋体",Font.PLAIN,16)); //设置默认字体
??? ??? jta.setLineWrap(true);
??? ??? jta.setDragEnabled(true);
??????? jsp = new JScrollPane(jta);??
???????
??????? fileChooser = new JFileChooser();
??? ???
??? ??? JMenuBar jmb = new JMenuBar();
??? ??? JMenu file = new JMenu("文件(F)");
??? ??? JMenu edit = new JMenu("编辑(E)");
??? ??? JMenu form = new JMenu("格式(O)");
??? ??? JMenu check = new JMenu("查看(V)");
??? ??? JMenu help = new JMenu("帮助(H)");
??? ???
??? ??? newFile = new JMenuItem("新建(N)?? Ctrl+N");
??? ??? open = new JMenuItem("打开(O)?? Ctrl+O");
??? ??? //设置快捷键
??????? open.setAccelerator(
??????? ??? ??? KeyStroke.getKeyStroke(
??????? ??? ??? ??? ??? KeyEvent.VK_O,
??????? ??? ??? ??? ??? InputEvent.CTRL_MASK));
??? ??? save = new JMenuItem("保存(S)?? Ctrl+S");
??? ??? save.setAccelerator(
??? ??? ??? ??? KeyStroke.getKeyStroke(
??? ??? ??? ??? ??? ??? KeyEvent.VK_S,
??? ??? ??? ??? ??? ??? InputEvent.CTRL_MASK));
??? ??? saveAs = new JMenuItem("另存为(A)...");
??? ??? exit = new JMenuItem("退出(Q)");
??? ??? exit.setAccelerator(
??? ??? ??? ??? KeyStroke.getKeyStroke(
??? ??? ??? ??? ??? ??? KeyEvent.VK_Q,
??? ??? ??? ??? ??? ??? InputEvent.CTRL_MASK));
??? ??? newFile.addActionListener( //新建文件
??? ??? ??? ??? new ActionListener() {
??? ??? ??? ??? ??? public void actionPerformed(ActionEvent e) {
??? ??? ??? ??? ??? ??? newFiles();
??? ??? ??? ??? ??? }
??? ??? ??? ??? });
??? ??? exit.addActionListener( //退出选项事件
??? ??? ??? ??? new ActionListener() {
??? ??? ??? ??? ??? public void actionPerformed(ActionEvent e) {
??? ??? ??? ??? ??? ??? closeFile();
??? ??? ??? ??? ??? }
??? ??? ??? ??? });
??? ??? save.addActionListener( //保存事件
??? ??? ??? ??? new ActionListener() {
??? ??? ??? ??? ??? public void actionPerformed(ActionEvent e) {
??? ??? ??? ??? ??? ??? saveFile();
??? ??? ??? ??? ??? }
??? ??? ??? ??? });
??? ??? saveAs.addActionListener( //另存为事件
??? ??? ??? ??? new ActionListener() {
??? ??? ??? ??? ??? public void actionPerformed(ActionEvent e) {
??? ??? ??? ??? ??? ??? saveFileAs();
??? ??? ??? ??? ??? }
??? ??? ??? ??? });
??? ??? open.addActionListener( //打开事件
??? ??? ??? ??? new ActionListener() {
??? ??? ??? ??? ??? public void actionPerformed(ActionEvent e) {
??? ??? ??? ??? ??? ??? openFile();
??? ??? ??? ??? ??? }
??? ??? ??? ??? });
??? ??? file.add(newFile);
??? ??? file.add(open);
??? ??? file.add(save);
??? ??? file.add(saveAs);
??? ??? file.addSeparator(); // 设置横线
??? ??? file.add(exit);?
??? ??? revocation = new JMenuItem("撤销");
??? ??? revocation.setEnabled(false);
??? ??? cut = new JMenuItem("剪切");
??? ??? cut.setAccelerator(
??? ??? ??? ??? KeyStroke.getKeyStroke(
??? ??? ??? ??? ??? ??? KeyEvent.VK_X,
??? ??? ??? ??? ??? ??? InputEvent.CTRL_MASK));
??? ??? copy = new JMenuItem("复制");
??? ??? copy.setAccelerator(
??? ??? ??? ??? KeyStroke.getKeyStroke(
??? ??? ??? ??? ??? ??? KeyEvent.VK_C,
??? ??? ??? ??? ??? ??? InputEvent.CTRL_MASK));
??? ??? paste = new JMenuItem("黏贴");
??? ??? paste.setAccelerator(
??? ??? ??? ??? KeyStroke.getKeyStroke(
??? ??? ??? ??? ??? ??? KeyEvent.VK_V,
??? ??? ??? ??? ??? ??? InputEvent.CTRL_MASK));
??? ??? delete = new JMenuItem("删除");
??? ??? find = new JMenuItem("查找");
??? ??? find.setAccelerator(
??? ??? ??? ??? KeyStroke.getKeyStroke(
??? ??? ??? ??? ??? ??? KeyEvent.VK_F,
??? ??? ??? ??? ??? ??? InputEvent.CTRL_MASK));
??? ??? findNext = new JMenuItem("查找下一个");
??? ??? replace = new JMenuItem("替换");
??? ??? date = new JMenuItem("时间/日期");
??? ??? findNext.setEnabled(false);
??? ??? replace.setEnabled(false);
??? ??? cut.addActionListener( //剪切事件
??? ??? ??? ??? new ActionListener() {
??? ??? ??? ??? ??? public void actionPerformed(ActionEvent e) {
??? ??? ??? ??? ??? ??? cut();
??? ??? ??? ??? ??? }
??? ??? ??? ??? });
??? ??? copy.addActionListener( //copy事件
??? ??????????? new ActionListener() {
??? ??????????????? public void actionPerformed(ActionEvent e) {
??? ??????????????????? copy();
??? ??????????????? }
??? ??????????? });
??????? paste.addActionListener( //黏贴事件
??????????? new ActionListener() {
??????????????? public void actionPerformed(ActionEvent e) {
??????????????????? paste();
??????????????? }
??????????? });
??????? delete.addActionListener(
??????? ??? ??? new ActionListener() {
??????? ??? ??? ??? public void actionPerformed(ActionEvent e) {
??????? ??? ??? ??? ??? jta.setText("");
??????? ??? ??? ??? }
??????? ??? ??? });
??????? date.addActionListener(
??????? ??? ??? new ActionListener() {
??????? ??? ??? ??? public void actionPerformed(ActionEvent e) {
??????? ??? ??? ??? ??? nowDate();
??????? ??? ??? ??? }
??????? ??? ??? });
??????? find.addActionListener(
??????? ??? ??? new ActionListener() {
??????? ??? ??? ??? public void actionPerformed(ActionEvent e) {
??????? ??? ??? ??? ??? onFind();
??????? ??? ??? ??? }
??????? ??? ??? });
??? ??? edit.add(revocation);
??? ??? edit.addSeparator();
??? ??? edit.add(cut);
??? ??? edit.add(copy);
??? ??? edit.add(paste);
??? ??? edit.add(delete);
??? ??? edit.addSeparator();
??? ??? edit.add(find);
??? ??? edit.add(findNext);
??? ??? edit.add(replace);
??? ??? edit.addSeparator();
??? ??? edit.add(date);
??? ???
??????? // 编辑区键盘事件
??????? jta.addKeyListener(
??????????? new KeyAdapter() {
??????????????? public void keyTyped(KeyEvent e) {
??????????????????? processTextArea();
??????????????? }
??????????? }
??????? );
??????? // 编辑区鼠标事件
??????? jta.addMouseListener(
??????????? new MouseAdapter() {
??????????????? public void mouseReleased(MouseEvent e) {
??????????????????? if(e.getButton() == MouseEvent.BUTTON3)
??????????????????????? popUpMenu.show(jta, e.getX(), e.getY());
??????????????? }
???????????????
??????????????? public void mouseClicked(MouseEvent e) {
??????????????????? if(e.getButton() == MouseEvent.BUTTON1)
??????????????????????? popUpMenu.setVisible(false);
??????????????? }
??????????? }
??????? );?
??? ???
??? ??? script = new JMenuItem("字体");
??? ??? script.setEnabled(false);
??? ??? form.add(script);
??? ???
??? ??? zhuangTai = new JMenuItem("状态栏");
??? ??? zhuangTai.setEnabled(false);
??? ??? check.add(zhuangTai);
??? ???
??? ??? zhuTi = new JMenuItem("帮助主题");
??? ??? zhuTi.setEnabled(false);
??? ??? helpZhuTi = new JMenuItem("关于主题");
??? ??? help.add(zhuTi);
??? ??? help.addSeparator();
??? ??? help.add(helpZhuTi);
??? ??? helpZhuTi.addActionListener(
??? ??? ??? ??? new ActionListener() {
??? ??? ??? ??? ??? public void actionPerformed(ActionEvent e) {
??? ??? ??? ??? ??? ??? zhuTi();
??? ??? ??? ??? ??? }
??? ??? ??? ??? });
??? ???
??? ??? jmb.add(file);
??? ??? jmb.add(edit);
??? ??? jmb.add(form);
??? ??? jmb.add(check);
??? ??? jmb.add(help);
??? ???
??????? // 状态栏
??????? stateBar = new JLabel("未修改");
??????? stateBar.setHorizontalAlignment(SwingConstants.RIGHT);
??????? stateBar.setBorder(
??????????????? BorderFactory.createEtchedBorder());
???????
??????? popUpMenu = edit.getPopupMenu();
????????
??? ??? this.setLayout(new BorderLayout());
??? ??? this.add(jmb,BorderLayout.NORTH);
??? ??? this.add(jsp,BorderLayout.CENTER);
??? ??? this.add(stateBar, BorderLayout.SOUTH);
??????? this.addWindowListener(
??????????????? new WindowAdapter() {
??????????????????? public void windowClosing(WindowEvent e) {
??????????????????????? closeFile();
??????????????????? }
??????????????? }
??????????? );
??? }
???
??? //退出
??? private void closeFile() {
??????? // 是否已保存文件
??????? if(!isCurrentFileSaved()) {
??????????? // 释放窗口资源,而后关闭程序
??????????? System.exit(1);
??????? }
??????? else {
??????????? int option = JOptionPane.showConfirmDialog(
??????????????????? null, "文件已修改,是否保存?",
??????????????????? "保存文件?", JOptionPane.YES_NO_OPTION,
??????????????????? JOptionPane.WARNING_MESSAGE, null);

??????????? switch(option) {
??????????????? case JOptionPane.YES_OPTION:
??????????????????? saveFile();
??????????????????? break;
??????????????? case JOptionPane.NO_OPTION:
?????????????????? System.exit(1);
??????????? }
??????? }
??? }
??? //新建文件
??? private void newFiles() {
??? ??? if(isCurrentFileSaved()) {
??? ??? ??? saveFile();
??? ??? }
??? ??? stateBar.setText("未修改");
??? ??? jta.setText("");
??? }
???
??? //保存`
??? private void saveFile() {
??? ??? //从标题栏取得文件名
??? ??? File file = new File(getTitle());
??? ??? //若指定文件不存在
??? ??? if(!file.exists()) {
??? ??? ??? saveFileAs();
??? ??? } else {
??? ??? ??? try {
??? ??? ??? ??? BufferedWriter buf = new BufferedWriter(new FileWriter(file));
??? ??? ??? ??? buf.write(jta.getText());
??? ??? ??? ??? buf.close();
??? ??? ??? ??? stateBar.setText("未修改");
??? ??? ??? } catch (IOException e) {
??? ??? ??? ??? JOptionPane.showMessageDialog(null, e.toString(),
??? ??? ??? ??? ??? ??? "写入文件失败",JOptionPane.ERROR_MESSAGE);
??? ??? ??? }
??? ??? }
??? }
??? //另存为
??? private void saveFileAs() {
??? ??? //显示文件对话框
??? ??? int option = fileChooser.showSaveDialog(null);
??? ??? //确认要选取文件
??? ??? if(option == JFileChooser.APPROVE_OPTION) {
??? ??? ??? //取得选取文件
??? ??? ??? File ff = fileChooser.getSelectedFile();
??? ??? ??? //在标题栏上设定文件名称
??? ??? ??? setTitle(ff.toString());
??? ??? ??? try {
??? ??? ??? ??? ff.createNewFile();
??? ??? ??? ??? saveFile();
??? ??? ??? } catch (IOException e) {
??? ??? ??? ??? JOptionPane.showMessageDialog(null, e.toString(),
??? ??? ??? ??? ??? ??? "无法新建文件",JOptionPane.ERROR_MESSAGE);
??? ??? ??? }
??? ??? }
??? }
??? //检查文件是否修改
??? private boolean isCurrentFileSaved() {
??????? if(stateBar.getText().equals("未修改")) {
??????????? return false;
??????? }
??????? else {
??????????? return true;
??????? }
??? }
??? //打开文件
??? private void openFile() {
??? ??? if(!isCurrentFileSaved()) {
??? ??? ??? open();//打开
??? ??? }else {
??????????? // 显示对话框
??????????? int option = JOptionPane.showConfirmDialog(
??????????????????? null, "文件已修改,是否保存?",
??????????????????? "保存文件?", JOptionPane.YES_NO_OPTION,
??????????????????? JOptionPane.WARNING_MESSAGE, null);
??????????? switch(option) {
??????????????? // 确认文件保存
??????????????? case JOptionPane.YES_OPTION:
??????????????????? saveFile(); // 保存文件
???????????????????? break;
?????????????? // 放弃文件保存
??????????????? case JOptionPane.NO_OPTION:
??????????????????? open();
??????????????????? break;
??????????? }
??????? }
??? }
???
??? private void open() {
??? ??? // fileChooser 是 JFileChooser 的实例
??????? // 显示文件选取的对话框
??????? int option = fileChooser.showDialog(null, null);
???????????
??????? // 使用者按下确认键
??????? if(option == JFileChooser.APPROVE_OPTION) {
??????????? try {
??????????????? // 开启选取的文件
??????????????? BufferedReader buf =
??????????????????? new BufferedReader(
?????????????????????? new FileReader(
???????????????????????? fileChooser.getSelectedFile()));

??????????????? // 设定文件标题
??????????????? setTitle(fileChooser.getSelectedFile().toString());
??????????????? // 清除前一次文件
??????????????? jta.setText("");
??????????????? // 设定状态栏
??????????????? stateBar.setText("未修改");
??????????????? // 取得系统相依的换行字符
??????????????? String lineSeparator = System.getProperty("line.separator");
??????????????? // 读取文件并附加至文字编辑区
??????????????? String text;
??????????????? while((text = buf.readLine()) != null) {
??????????????????? jta.append(text);
??????????????????? jta.append(lineSeparator);
??????????????? }

??????????????? buf.close();
??????????? }??
??????????? catch(IOException e) {
??????????????? JOptionPane.showMessageDialog(null, e.toString(),
??????????????????? "开启文件失败", JOptionPane.ERROR_MESSAGE);
??????????? }
??????? }???
??? }
??? //设置日期
??? private void nowDate() {
??? ??? SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
??? ??? jta.append(sdf.format(new Date()));
??? }
???
??? private void cut() {
??????? jta.cut();
??????? stateBar.setText("已修改");
??????? popUpMenu.setVisible(false);
??? }

??? private void copy() {
??????? jta.copy();
??????? popUpMenu.setVisible(false);???
??? }

??? private void paste() {
??????? jta.paste();
??????? stateBar.setText("已修改");
??????? popUpMenu.setVisible(false);
??? }

??? private void processTextArea() {
??????????? stateBar.setText("已修改");
??? }
??? private void onFind() {
??? ??? ?//查找替换对话框
??? ??? JDialog jd = new JDialog();
??? ??? jd.setTitle("查找/替换");
??? ??? JLabel jl1 = new JLabel("查找:");
??? ??? jl1.setBounds(34,10,30,20);
??? ??? JLabel jl2 = new JLabel("替换内容:");
??? ??? jl2.setBounds(10,40,80,20);
??? ??? ?jt = new JTextField(10);
??? ??? jt.setBounds(85,10,105,20);
??? ??? ?jt1 = new JTextField(10);
??? ??? jt1.setBounds(85,40,105,20);
??? ??? jb = new JButton("查找下一个");
??? ??? jb.setBounds(220,10,100,20);
??? ??? jb1 = new JButton("逐个替换");
??? ??? jb1.setBounds(220,40,100,20);
??? ??? jd.setLayout(null);
??? ??? jd.setBounds(500,300,350,150);
??? ???
??? ??? jd.add(jl1);
??? ??? jd.add(jl2);
??? ??? jd.add(jt);
??? ??? jd.add(jt);
??? ??? jd.add(jt1);
??? ??? jd.add(jb);
??? ??? jd.add(jb1);
??? ??? jd.setVisible(true);
??? ??? jd.setResizable(false);
??? ???
??? ??? //事件管理
??? ??? jb.addActionListener(new ActionListener(){ //查找功能
??? ??? ??? public void actionPerformed(ActionEvent e) {
??? ??? ??? ??? ??? String s=jt.getText();
??? ??? ??? ??? ??? int x = jta.getText().indexOf(s,i);
??? ??? ??? ??? ??? if (x == -1) {
??? ??? ??? ??? ??? ??? JOptionPane.showMessageDialog(null, "没找到 " + s);
??? ??? ??? ??? ??? ??? i = 0;
??? ??? ??? ??? ??? } else {
??? ??? ??? ??? ??? ??? jta.setSelectionStart(x);
??? ??? ??? ??? ??? ??? jta.setSelectionEnd(x + s.length());
??? ??? ??? ??? ??? ??? i = x + 1;
??? ??? ??? ??? ??? }
??? ??? ??? }
??? ??? ??? });
??? ??? jb1.addActionListener(new ActionListener() {
??? ??? ??? public void actionPerformed(ActionEvent e) {
??? ??? ??? ??? String s=jt.getText();
??? ??? ??? ??? String s1=jt1.getText();
??? ??? ??? ??? int x = jta.getText().indexOf(s, u);
??? ??? ??? ??? if (x == -1) {
??? ??? ??? ??? ??? JOptionPane.showMessageDialog(null, "没找到 " + s);
??? ??? ??? ??? ??? u = 0;
??? ??? ??? ??? } else {
??? ??? ??? ??? ??? jta.setSelectionStart(x);
??? ??? ??? ??? ??? jta.setSelectionEnd(x + s.length());
??? ??? ??? ??? ??? jta.replaceSelection(s1);
??? ??? ??? ??? ??? jta.setSelectionStart(jta.getSelectionEnd()-s1.length());
??? ??? ??? ??? ??? jta.setSelectionEnd(jta.getSelectionEnd());
??? ??? ??? ??? ??? u = x + 1;
??? ??? ??? ??? }
??? ??? ??? }
??? ??? });
??? }
???
??? //主题
??? private void zhuTi() {
??? ??? JOptionPane.showMessageDialog(null, "该记事本是由xxx");
??? }
???
??? //主函数
??? public static void main(String[] args) {
??? ??? new Notepad();
??? }

}

读书人网 >编程

热点推荐