Java--记事本

来源:互联网 发布:域名备案购买 编辑:程序博客网 时间:2024/06/05 07:57

用Java制作的记事本

功能如下:

1.打开文件

2.保存文件

3.换行

4.右键,包括:

全选,复制,粘贴,剪切

5.快捷键:打开,保存

 

 

 

具体实现如下:

1.新建窗体

2.加入菜单栏到窗体     JMenuBar

3.为菜单栏添加菜单      JMenu

4.为菜单添加菜单项      JMenuItem

5.为部分菜单项添加快捷键

6.添加JScrollPane到窗体中

7.将文本域JTextFiled添加到JScrollPane中

8.为文本框添加右键功能JPopupMenu

9.为右键菜单添加菜单项

10.添加按钮监听

 

 

具体代码如下:

 

package cn.mrzhu.menu;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
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.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;

public class MenuDemo {

 public void menu(){

  //新建窗体
  final JFrame jf = new JFrame("菜单");
  jf.setBounds(300, 300, 500, 500);
  jf.setVisible(true);

  //菜单栏
  JMenuBar mb = new JMenuBar();

  //菜单
  JMenu file = new JMenu("文件(F)");
  JMenu edit = new JMenu("编辑(E)");
  JMenu find = new JMenu("查看(V)");


  //file(文件) 菜单项
  JMenuItem create = new JMenuItem("新建(N)");
  JMenuItem open = new JMenuItem("打开(O)");
  JMenuItem save = new JMenuItem("保存(S)");
  JMenuItem savaAs = new JMenuItem("另存为(A)");
  JMenuItem close = new JMenuItem("关闭(C)");
  JMenuItem quit = new JMenuItem("退出(Q)");

  //为file菜单添加菜单顶
  file.add(create);
  file.addSeparator();
  file.add(open);
  file.addSeparator();
  file.add(save);
  file.addSeparator();
  file.add(savaAs);
  file.addSeparator();
  file.add(close);
  file.addSeparator();
  file.add(quit);

  //快捷键 打开和保存
  open.setAccelerator(KeyStroke.getKeyStroke('O', java.awt.Event.CTRL_MASK, false));
  save.setAccelerator(KeyStroke.getKeyStroke('S', java.awt.Event.CTRL_MASK, false));


  //edit(编辑)菜单项
  JMenuItem back = new JMenuItem("撤消(U)");
  JMenuItem rework = new JMenuItem("重做(R)");
  JMenuItem cut = new JMenuItem("剪切(T)");
  JMenuItem copy = new JMenuItem("复制(C)");
  JMenuItem paste = new JMenuItem("粘贴(P)");

  //为edit菜单添加菜单项
  edit.add(back);
  edit.addSeparator();
  edit.add(rework);
  edit.addSeparator();
  edit.add(cut);
  edit.addSeparator();
  edit.add(copy);
  edit.addSeparator();
  edit.add(paste);

  //find(查看)菜单项
  JMenuItem tool = new JMenuItem("工具栏(T)");
  JMenuItem state = new JMenuItem("状态栏(S)");
  JMenuItem side = new JMenuItem("侧边栏(P)");
  JMenuItem fullScreen = new JMenuItem("全屏(F)");
  JMenu outstanding = new JMenu("突出显示模式(H)");
  JCheckBoxMenuItem line = new JCheckBoxMenuItem("换行");
  line.setState(true);

  //为find添加菜单顶
  find.add(tool);
  find.addSeparator();
  find.add(state);
  find.addSeparator();
  find.add(side);
  find.addSeparator();
  find.add(fullScreen);
  find.addSeparator();
  find.add(outstanding);
  find.addSeparator();
  find.add(line);

  //outstanding(突出显示模式)菜单顶
  JMenuItem text = new JMenuItem("纯文本");
  JMenu source = new JMenu("源代码");
  JMenu script = new JMenu("脚本");
  JMenu sign = new JMenu("标记");
  JMenu other = new JMenu("其他");
  JMenu science = new JMenu("科学");

  //为outstanding添加菜单项
  outstanding.add(text);
  outstanding.add(source);
  outstanding.add(script);
  outstanding.add(sign);
  outstanding.add(other);
  outstanding.add(science);

 

  // 文本域
  JScrollPane jsp = new JScrollPane();
  final JTextArea jta = new JTextArea();
  jta.setLineWrap(true);
  jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
  jsp.getViewport().add(jta);


  //右键,弹出菜单
  final JPopupMenu jpmenu = new JPopupMenu();
  JMenuItem ri_selectAll = new JMenuItem("全选");
  JMenuItem ri_back = new JMenuItem("撤消");
  JMenuItem ri_rework = new JMenuItem("重做");
  JMenuItem ri_cut = new JMenuItem("剪切");
  JMenuItem ri_copy = new JMenuItem("复制");
  JMenuItem ri_paste = new JMenuItem("粘贴");

  jpmenu.add(ri_selectAll);
  jpmenu.addSeparator();
  jpmenu.add(ri_back);
  jpmenu.addSeparator();
  jpmenu.add(ri_rework);
  jpmenu.addSeparator();
  jpmenu.add(ri_cut);
  jpmenu.addSeparator();
  jpmenu.add(ri_copy);
  jpmenu.addSeparator();
  jpmenu.add(ri_paste);

  //添加右键监听
  jta.addMouseListener(new MouseAdapter() {
   @Override
   public void mouseClicked(MouseEvent e) {
    if(e.getButton() == MouseEvent.BUTTON3){
     jpmenu.show(jta, e.getX(), e.getY());
    }
   }
  });


  /*
   *右键功能
   *
   */

  //右键————》selectAll 全选
  ri_selectAll.addActionListener(new ActionListener() {
   @Override
   public void actionPerformed(ActionEvent e) {
    jta.selectAll();
   }
  });

  //右键————》cut 剪切
  ri_cut.addActionListener(new ActionListener() {
   @Override
   public void actionPerformed(ActionEvent e) {
    jta.cut();
   }
  });

  //右键————》copy 复制
  ri_copy.addActionListener(new ActionListener() {
   @Override
   public void actionPerformed(ActionEvent e) {
    jta.copy();
   }
  });

  //右键————》paste 粘贴

  ri_paste.addActionListener(new ActionListener() {
   @Override
   public void actionPerformed(ActionEvent e) {
    jta.paste();
   }
  });

  //换行监听
  line.addItemListener(new ItemListener() {

   @Override
   public void itemStateChanged(ItemEvent e) {
    switch(e.getStateChange()){
    case ItemEvent.SELECTED://勾选状态
     jta.setLineWrap(true);
     break;
    case ItemEvent.DESELECTED://未勾选状态
     jta.setLineWrap(false);
     break;
    }
   }
  });

  //文件————》打开 监听事件
  open.addActionListener(new ActionListener() {
   @Override
   public void actionPerformed(ActionEvent e) {
    JFileChooser jfchooser = new JFileChooser();
    int state = jfchooser.showOpenDialog(jf);
    switch(state){
    case  JFileChooser.APPROVE_OPTION:

     //读取文件
     File file = jfchooser.getSelectedFile();
     try {
      FileReader fr = new FileReader(file);
      BufferedReader bis = new BufferedReader(fr);
      String ch = null;
      while((ch = bis.readLine()) != null){
       jta.append(ch);
      }
      bis.close();
      fr.close();
     } catch (FileNotFoundException e1) {
      e1.printStackTrace();
     } catch (IOException e1) {
      e1.printStackTrace();
     }
     break;
    }
   }
  });

  //文件——————》 保存 监听事件
  save.addActionListener(new ActionListener() {
   @Override
   public void actionPerformed(ActionEvent e) {
    JFileChooser jfchooser = new JFileChooser();
    int state = jfchooser.showOpenDialog(jf);
    switch(state){
    case JFileChooser.APPROVE_OPTION:
     //写入文件并保存
     File file = jfchooser.getSelectedFile();
     try {
      FileOutputStream fis = new FileOutputStream(file);
      BufferedOutputStream bos = new BufferedOutputStream(fis);
      String content = jta.getText();
      bos.write(content.getBytes());

      bos.close();
      fis.close();
     } catch (FileNotFoundException e1) {
      e1.printStackTrace();
     } catch (IOException e1) {
      e1.printStackTrace();
     }
     break;
    }
   }
  });

  //添加菜单栏到窗口
  jf.setJMenuBar(mb);
  jf.add(jsp);
  //将文件,编辑,查看加入到菜单栏
  mb.add(file);
  mb.add(edit);
  mb.add(find);


 }

 public static void main(String[] args) {
  MenuDemo note = new MenuDemo();
  note.menu();
 }
}

为看起来容易看点,把全部的代码写在一块,不建议这么做

最好是把代码模块化,便于修改和维护,资源中有两个工程

一个是把所有代码写成一块的,就是上面贴出来 的代码 ,

另一个是模块化后的工程

 

 

 

 资源下载:http://download.csdn.net/detail/zlqqhs/4878656