java书写的记事本程序

package com.cnxieyang.notepadexample;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FileDialog;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;

public class MyNotepad extends JFrame {
// 先设计窗体
JMenuBar bar = new JMenuBar();
JMenu doucument = new JMenu("文件(F)");
JMenu deal = new JMenu("编辑(E)");
JMenu style = new JMenu("格式(O)");
JMenu see = new JMenu("查看(V)");
JMenu help = new JMenu("帮助(H)");
JTextArea area = new JTextArea();
JMenuItem newFile = new JMenuItem("新建(N)");
JMenuItem open = new JMenuItem("打开(O)");
JMenuItem save = new JMenuItem("保存(S)");
JMenuItem saveAs = new JMenuItem("另存为(A)");
JMenuItem yemian = new JMenuItem("页面设置(U)");
JMenuItem dayin = new JMenuItem("打印(P)...");
JMenuItem exit = new JMenuItem("退出(X)");

JMenuItem undo = new JMenuItem("撤销(U)");
JMenuItem cut = new JMenuItem("剪切(T)");
JMenuItem copy = new JMenuItem("复制(C)");
JMenuItem paste = new JMenuItem("粘贴(P)");
JMenuItem selectAll = new JMenuItem("全选(A)");
JMenuItem timeDate = new JMenuItem("时间/日期(D)");

JCheckBoxMenuItem lineWrap = new JCheckBoxMenuItem("自动换行(M)");
JMenuItem fonts = new JMenuItem("字体");

JMenuItem about = new JMenuItem("关于记事本(A)");

JFrame jf = this;

// 设置了notepad屏幕的位置和大小
public MyNotepad(String s) {
this.setTitle(s);
int x, y;
Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
x = dimension.width;
y = dimension.height;
// x = (x - 600) / 2;
// y = (y - 450) / 2;
this.setLocation(300, 300);
this.setSize(600, 400);
setMinimumSize(new Dimension(250, 150));
this.setVisible(true);
// 设置了JFrame
}

public void init() {
// 初始化了其中的组件,实现了notepad的面板的
bar.add(doucument);
bar.add(deal);
bar.add(style);
bar.add(see);
bar.add(help);
doucument.add(newFile);
doucument.add(open);
doucument.add(save);
doucument.add(saveAs);
doucument.addSeparator();
doucument.add(yemian);
doucument.add(dayin);
doucument.addSeparator();
doucument.add(exit);

deal.add(undo);
deal.addSeparator();
deal.add(cut);
deal.add(copy);
deal.add(paste);
deal.addSeparator();
deal.add(selectAll);
deal.add(timeDate);
newFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
InputEvent.CTRL_MASK));
open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
InputEvent.CTRL_MASK));
save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
KeyEvent.CTRL_MASK));
dayin.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,
InputEvent.CTRL_MASK));
undo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,
InputEvent.CTRL_MASK));
cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
KeyEvent.CTRL_MASK));
copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
InputEvent.CTRL_MASK));
paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
KeyEvent.CTRL_MASK));
selectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,
KeyEvent.CTRL_MASK));
timeDate.setMnemonic('D');
see.add(lineWrap);
see.add(fonts);

help.add(about);
setJMenuBar(bar);
bar.setVisible(true);
getContentPane().add(new JScrollPane(area));
area.setBackground(Color.white);
// 添加时间的监听,文本域提供了好多的对当前文件操作的方法
Listener listener = new Listener();
newFile.addActionListener(listener);
open.addActionListener(listener);
save.addActionListener(listener);
saveAs.addActionListener(listener);
yemian.addActionListener(listener);
dayin.addActionListener(listener);
exit.addActionListener(listener);
copy.addActionListener(listener);
cut.addActionListener(listener);
paste.addActionListener(listener);
selectAll.addActionListener(listener);
timeDate.addActionListener(listener);
lineWrap.addActionListener(listener);
fonts.addActionListener(listener);
about.addActionListener(listener);

}

class Listener implements ActionListener {

private FileInputStream inputStream;
private FileOutputStream outputStream;

@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(open)) {
// 打开文件的操作的啦
FileDialog dialog = new FileDialog(jf, "打开文件", FileDialog.LOAD);
dialog.setVisible(true);
String path = dialog.getDirectory() + dialog.getFile();
try {
inputStream = new FileInputStream(path);
int temp = inputStream.available();
byte[] bytes = new byte[temp];
inputStream.read(bytes);
area.setText(new String(bytes));

} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

} else if (e.getSource() == newFile) {
// 文件的新建的啦
if (area.getText().length() > 0) {
// 如果文本域中有数据的话,需要提示保存的操作,否则直接新建文本域
int count = JOptionPane.showConfirmDialog(jf, "请保存当前的工作文件");
if (count == 0) {
FileDialog fileDialog = new FileDialog(jf, "文件的保存",
FileDialog.SAVE);
System.out.println(fileDialog);
fileDialog.setVisible(true);
String path = fileDialog.getDirectory()
+ fileDialog.getFile();
System.out.println(fileDialog.getFile());
if (fileDialog.getFile() != null) {
String temp = area.getText();

try {
outputStream = new FileOutputStream(path);
outputStream.write(temp.getBytes());
outputStream.flush();
outputStream.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

} else {
area.setText("");
}
} else if (count == 1) {
area.setText("");

} else {
// 如果是取消的话,不做任何的处理
}
} else {// 直接新建就是可以的啦
area.setText("");

}
} else if (e.getSource() == save) {
// 文件的保存的操作的啦
if (area.getText().length() > 0) {
// 如果数据存在的话,进行保存的操作
FileDialog fileDialog = new FileDialog(jf, "文件的保存",
FileDialog.SAVE);
fileDialog.setVisible(true);
String path = fileDialog.getDirectory()
+ fileDialog.getFile();
System.out.println(fileDialog.getFile());
if (fileDialog.getFile() != null) {
String temp = area.getText();
try {
outputStream = new FileOutputStream(path);
outputStream.write(temp.getBytes());
outputStream.flush();
outputStream.close();
// 这个文件在操作完成了之后需要将文件流给关闭的啦
// 提示文件保存完毕
JOptionPane.showMessageDialog(jf, "保存完毕");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

}
} else {// 如果数据不存在的话,提示保存的内容为空
JOptionPane.showMessageDialog(jf, "保存内容为空,请输入数据");

}
}else if(e.getSource()==cut){
area.cut();
}else if(e.getSource()==copy){
area.copy();
}else if(e.getSource()==paste){
area.paste();
}else if(e.getSource()==selectAll){
area.selectAll();
}else if(e.getSource()==about){
JOptionPane.showMessageDialog(jf, "感谢您的使用,撤销操作要使用堆栈进行处理!字体的设置可以实现下次对此程序的更改,谢谢!");
}
}
}

public static void main(String[] args) {
MyNotepad myNotepad = new MyNotepad("我的记事本");
myNotepad.init();
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值