java记事本框架


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

import java.io.*;

/**
 * Java记事本
 * @author Administrator
 *
 */
public class Notepad implements ActionListener{

 private JFrame f ;
 private JTextArea text;
 private JMenuBar mb;
 private JMenu fileMenu,editMenu,optionMenu,viewMenu,helpMenu;
 private JMenuItem newItem,saveItem,saveasItem,openItem,pageItem,printItem,exitItem;
 private JPopupMenu popup;
 private JMenuItem undo,cut,copy,paste,all;
 
 /**
  * 初始化界面
  */
 public void init()
 {
  
  f = new JFrame("Java记事本");
  text = new JTextArea();
  mb = new JMenuBar();
  
  fileMenu = new JMenu("文件");
  editMenu = new JMenu("编辑");
  optionMenu = new JMenu("格式");
  viewMenu = new JMenu("查看");
  helpMenu = new JMenu("帮助");
  //文件菜单
  newItem = new JMenuItem("新建");
  newItem.addActionListener(this);
  openItem = new JMenuItem("打开");
  openItem.addActionListener(this);
  saveItem = new JMenuItem("保存");
  saveItem.addActionListener(this);
  saveasItem = new JMenuItem("另存为");
  saveasItem.addActionListener(this);
  pageItem = new JMenuItem("页面设置");
  printItem = new JMenuItem("打印...");
  exitItem = new JMenuItem("退出");
  
  //弹出式菜单
  popup = new JPopupMenu();
  undo = new JMenuItem("撤销(U)",'U');
  cut = new JMenuItem("剪切(X)",'X');
  copy = new JMenuItem("复制(C)",'C');
  paste = new JMenuItem("粘贴(V)",'V');
  all = new JMenuItem("全选(A)",'A');
  cut.addActionListener(this);
  copy.addActionListener(this);
  paste.addActionListener(this);
  all.addActionListener(this);
  
  popup.add(undo);
  popup.add(cut);
  popup.add(copy);
  popup.add(paste);
  popup.add(all);
  
  text.add(popup);
  text.addMouseListener(new MouseAdapter(){
   public void mouseReleased(MouseEvent e)
   {
    if(e.isPopupTrigger())
    {
     popup.show(text, e.getX(), e.getY());
    }
   }
   public void mousePressed(MouseEvent e)
   {
    mouseReleased(e);
   } 
   
  });
  
  f.setLayout(new BorderLayout());
  
  //把菜单项添加到菜单中
  fileMenu.add(newItem);
  fileMenu.add(openItem);
  fileMenu.add(saveItem);
  fileMenu.add(saveasItem);
  //添加分隔线
  fileMenu.addSeparator();
  fileMenu.add(pageItem);
  fileMenu.add(printItem);
  fileMenu.addSeparator();
  fileMenu.add(exitItem);
  
  //把菜单添加到菜单栏上
  mb.add(fileMenu);
  mb.add(editMenu);
  mb.add(optionMenu);
  mb.add(viewMenu);
  mb.add(helpMenu);
  
  //把菜单栏添加到窗体上
  f.setJMenuBar(mb);
  
  f.add(text);
  
  
  exitItem.addActionListener(this);

  
  f.setBounds(200,200,500,400);
  f.setVisible(true);
  
 }
 
 
 public static void main(String[] args) {
  new Notepad().init();

 }
 
 public void actionPerformed(ActionEvent e)
 {
  if(e.getSource()==cut)
  {
   this.text.cut();
  }
  if(e.getSource()==copy)
  {
   this.text.copy();
  }
  if(e.getSource()==paste)
  {
   this.text.paste();
  }
  if(e.getSource()==all)
  {
   this.text.selectAll();
  }
  
  if(e.getSource() == openItem)
  {
   //使用文件对话框
   FileDialog fd = new FileDialog(f, "打开...");
   fd.getFilenameFilter();
   fd.setVisible(true);
   fd.setLocation(400, 200);
   fd.setResizable(false);
   char b[] = new char[64];
   if(fd.getFile()!=null)
   {
    try
    {       //FileInputStream
     FileReader fr = new FileReader(new File(fd.getDirectory()+fd.getFile()))));
     int len = fr.read(b);
     while(len != -1)
     {
      String s = String.valueOf(b);
      text.append(s);
      len = fr.read(b);
      text.setCaretPosition(0);
     }
     fr.close();
    }catch(Exception ex)
    {
     JOptionPane.showMessageDialog(f, ex.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
    }
   }
  }
  
  if (e.getSource() == saveItem)
  {
   //使用JFileChooser
   JFileChooser fileChooser = new JFileChooser();
   fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
   fileChooser.setApproveButtonText("确定");
   fileChooser.setDialogTitle("另存为");
   int result = fileChooser.showSaveDialog(f);
   if (result == JFileChooser.CANCEL_OPTION)
   {
    JOptionPane.showMessageDialog(f, "您没有选择任何文件!", "错误", JOptionPane.ERROR_MESSAGE);
    return;
   }
   File saveFileName = fileChooser.getSelectedFile();
   if (saveFileName == null || saveFileName.getName().equals(""))
    JOptionPane.showMessageDialog(f, "不合法的文件名", "不合法的文件名", JOptionPane.ERROR_MESSAGE);
   else
   {
    try
    {
     FileWriter fw = new FileWriter(saveFileName);
     fw.write(text.getText());
     fw.close();
     
    }
    catch (IOException ex)
    {
     JOptionPane.showMessageDialog(f, ex.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
    }
   }
  }
 }

}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值