GUI类制作的记事本小程序

package cn.itcast.day_19.exercise;

import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;

java GUI类制作的记事本小程序  :点击下载

//使用cmd命令,在里面输入 java -jar 加上文件的路径名 ,就可以打开和运用了,有的机器可以直接运行


public class NotePad {
 private Frame frame;
 private MenuItem openMenuItem;
 private MenuItem saveMenuItem;
 private MenuItem exitMenuItem;
 private TextArea textArea;
 private Menu editMenu;
 
 public NotePad(){
  generateUI();
  handleEvent();
 }

 private void handleEvent() {
  frame.addWindowListener(new WindowAdapter(){
   public void windowClosing(WindowEvent e) {
    System.exit(0);
   }
  });
  openMenuItem.addActionListener(new ActionListener(){

   public void actionPerformed(ActionEvent e) {
    open();
    
   }
   
  });
  saveMenuItem.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent e) {
    save();
    
   }
  });
  
  exitMenuItem.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent e) {
    System.exit(0);
   }
  });
  
  textArea.addKeyListener(new KeyAdapter(){
   public void keyPressed(KeyEvent e) {
    if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_0)
     open();
    if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_S)
     save();
   }
  });
  
  /*editMenu.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent e) {
    
   }
   
  });*/
 }
 
 private void save() {
  FileDialog dialog = new FileDialog(frame, "保存", FileDialog.SAVE);
  dialog.setVisible(true);
  String dir = dialog.getDirectory();
  String name = dialog.getFile();
  if(dir != null && name != null){
   File file = new File(dir, name);
   saveFile(file);         // 将TextArea中的内容写出到file中
  }
 }

 private void saveFile(File file) {

  try {
   FileWriter fw = new FileWriter(file);
   fw.write(textArea.getText());
   fw.close();
  } catch (IOException e) {
   throw new RuntimeException(e);
  }
 }

 private void open() {
  
  FileDialog dialog = new FileDialog(frame,"打开", FileDialog.LOAD);
  dialog.setVisible(true);
  String dir = dialog.getDirectory();
  String name = dialog.getFile();
  if(dir != null && name != null){
   File file = new File(dir, name);
   loadFile(file);
  }
 }

 public void loadFile(File file) {
  try {
   FileInputStream fis = new FileInputStream(file);
   ByteArrayOutputStream baos = new ByteArrayOutputStream();
   byte[] buffer = new byte[1024];
   int len;
   while((len = fis.read(buffer)) != -1)
    baos.write(buffer, 0, len);
   fis.close();
   baos.close();
   
   String content = new String(baos.toByteArray()); // 将内存中的数据转为字符串
   textArea.setText(content);       // 将字符串设置到TextArea中,原本的东西没了
  } catch (IOException e) {
   throw new RuntimeException();
  }
 }

 private void generateUI() {
  frame = new Frame("记事本");
  frame.setSize(600, 400);
  frame.setLocation(300, 100);
  frame.setIconImage(Toolkit.getDefaultToolkit().createImage("logo.png"));
  
  // 创建菜单栏
  MenuBar menuBar = new MenuBar();
  
  // 创建菜单
  Menu fileMenu = new Menu("文件");
  editMenu = new Menu("编辑");
  
  // 创建菜单项
  openMenuItem = new MenuItem("打开");
  saveMenuItem = new MenuItem("保存");
  exitMenuItem = new MenuItem("退出");
  
  // 把菜单项装入菜单
  fileMenu.add(openMenuItem);
  fileMenu.add(saveMenuItem);
  fileMenu.addSeparator();
  fileMenu.add(exitMenuItem);
  
  // 把菜单装入菜单栏
  menuBar.add(fileMenu);
  menuBar.add(editMenu);
  
  //把菜单栏装入窗体
  frame.setMenuBar(menuBar);
  
  textArea = new TextArea();
  frame.add(textArea);
  
  frame.setVisible(true);
 }
 public static void main(String[] args) {
  new NotePad();
 }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值