java实现记事本功能吗_NoteBook Java实现记事本功能

package awt_notebook;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.FileDialog;

import java.awt.Font;

import java.awt.Frame;

import java.awt.Menu;

import java.awt.MenuBar;

import java.awt.MenuItem;

import java.awt.MenuShortcut;

import java.awt.TextArea;

import java.awt.Toolkit;

import java.awt.datatransfer.Clipboard;

import java.awt.datatransfer.DataFlavor;

import java.awt.datatransfer.StringSelection;

import java.awt.datatransfer.Transferable;

import java.awt.datatransfer.UnsupportedFlavorException;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyEvent;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

public class NoteBook extends Frame implements ActionListener{

private static final long serialVersionUID = 1L;

MenuBar menuBar = new MenuBar();

TextArea textarea = new TextArea();

// 文件菜单

Menu fileMenu = new Menu("文件");

MenuItem newItem = new MenuItem("新建");

MenuItem openItem = new MenuItem("打开");

MenuItem saveItem = new MenuItem("保存");

MenuItem saveAsItem = new MenuItem("另存为");

MenuItem exitItem = new MenuItem("退出");

// 编辑菜单

Menu editMenu = new Menu("编辑");

MenuItem selectItem = new MenuItem("全选");

MenuItem copyItem = new MenuItem("复制");

MenuItem cutItem = new MenuItem("剪切");

MenuItem pasteItem = new MenuItem("粘贴");

String fileName = "NoName.txt";// 默认的文件名

Toolkit toolkit = Toolkit.getDefaultToolkit();// 默认工具包

Clipboard clipBoard = toolkit.getSystemClipboard();// 剪切板对象

// 创建,并初始化打开文件对话框& 保存文件对话框

FileDialog openFileDialog = new FileDialog(this, "Open File",

FileDialog.LOAD);

FileDialog saveAsFileDialog = new FileDialog(this, "Save File As",

FileDialog.SAVE);

public NoteBook() {

setTitle("NotePad");

setFont(new Font("Times New Roman", Font.PLAIN, 12));

setBackground(Color.white);

setSize(600, 400);

// 将各子项添加到"文件"菜单下

fileMenu.add(newItem);

fileMenu.add(openItem);

fileMenu.add(saveItem);

fileMenu.add(saveAsItem);

fileMenu.addSeparator(); // 分割线

fileMenu.add(exitItem);

// 将各子项添加到"编辑"菜单下

editMenu.add(selectItem);

editMenu.addSeparator(); // 分割线

editMenu.add(copyItem);

editMenu.add(cutItem);

editMenu.add(pasteItem);

// 将"文件" 和 "编辑" 添加到菜单栏

menuBar.add(fileMenu);

menuBar.add(editMenu);

setMenuBar(menuBar);

add(textarea);

// 程序退出

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

// 为各子菜单项添加监听器,添加相应快捷键

newItem.addActionListener(this);

newItem.setShortcut(new MenuShortcut(KeyEvent.VK_N, true));

openItem.addActionListener(this);

openItem.setShortcut(new MenuShortcut(KeyEvent.VK_O, true));

saveItem.addActionListener(this);

saveItem.setShortcut(new MenuShortcut(KeyEvent.VK_S, true));

saveAsItem.addActionListener(this);

saveAsItem.setShortcut(new MenuShortcut(KeyEvent.VK_S, true));

exitItem.addActionListener(this);

exitItem.setShortcut(new MenuShortcut(KeyEvent.VK_E, true));

selectItem.addActionListener(this);

selectItem.setShortcut(new MenuShortcut(KeyEvent.VK_A, true));

copyItem.addActionListener(this);

copyItem.setShortcut(new MenuShortcut(KeyEvent.VK_C, true));

cutItem.addActionListener(this);

cutItem.setShortcut(new MenuShortcut(KeyEvent.VK_X, true));

pasteItem.addActionListener(this);

pasteItem.setShortcut(new MenuShortcut(KeyEvent.VK_P, true));

}

//为菜单项添加了ActionListener接口,必须定义actionPerformed方法

public void actionPerformed(ActionEvent e) {

//调用e.getSource()返回事件源,程序作出相应处理

Object eventSource = e.getSource();

// 判断事件源是哪一个菜单项

if (eventSource == newItem ) {//新建

textarea.setText("");

} else if (eventSource == openItem ) {//打开

openFileDialog.setVisible(true);

fileName = openFileDialog.getDirectory() + openFileDialog.getFile();

if (fileName != null)

readFile(fileName);

System.out.println(newItem.getShortcut() );

} else if (eventSource == saveItem) {//保存

if (fileName != null)

writeFile(fileName);

} else if (eventSource == saveAsItem) {//另存为

saveAsFileDialog.setVisible(true);

fileName = saveAsFileDialog.getDirectory()

+ saveAsFileDialog.getFile();

if (fileName != null)

writeFile(fileName);

} else if (eventSource == selectItem) {//全选

textarea.selectAll();

} else if (eventSource == copyItem) {//复制

String text = textarea.getSelectedText();

StringSelection selection = new StringSelection(text);// 创建能传输指定String的Transferable

clipBoard.setContents(selection, null);// 将剪切板的当前内容设置到指定的Transferable对象

} else if (eventSource == cutItem) {//剪切

String text = textarea.getSelectedText();

StringSelection selection = new StringSelection(text);// 创建能传输指定String的Transferable

clipBoard.setContents(selection, null);// 将剪切板的当前内容设置到指定的Transferable对象

//用空字符串代替指定起始位置的文本

textarea.replaceRange("", textarea.getSelectionStart(), textarea.getSelectionEnd());

}else if(eventSource == pasteItem){//粘贴

Transferable contents = clipBoard.getContents(this);

if(contents == null )return ;

String text="";

try {

//返回一个对象,表示将要被传输的数据

text = (String)contents.getTransferData(DataFlavor.stringFlavor);

} catch (UnsupportedFlavorException e1) {

e1.printStackTrace();

} catch (IOException e1) {

e1.printStackTrace();

}

//用text字符串代替起始位置的文本

textarea.replaceRange(text, textarea.getSelectionStart(), textarea.getSelectionEnd());

}else if(eventSource == exitItem){//退出

System.exit(0);

}

}

public static void main(String[] args) {

Frame frame = new NoteBook();

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

Dimension frameSize = frame.getSize();

//调整notebook frame的长宽,以适应屏幕尺寸

if(frameSize.height>screenSize.height)

frameSize.height = screenSize.height;

if(frameSize.width>screenSize.width)

frameSize.width = screenSize.width;

frame.setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);

frame.setVisible(true);

}

//写文件

private void writeFile(String fileName2) {

try {

File file = new File(fileName);

FileWriter writeOut = new FileWriter(file);

writeOut.write(textarea.getText());

writeOut.close();

}catch (IOException e) {

System.out.println( "Error opening File" );

}

}

//读文件

private void readFile(String fileName) {

try {

File file = new File(fileName);

FileReader readIn = new FileReader(file);

int size = (int )file.length();

int charsRead = 0;//创建,初始化整型数据charsRead

char[] content = new char[size];

while(readIn.ready())

charsRead += readIn.read(content, charsRead, size-charsRead);//读出文件字符

readIn.close();

//设置文本区域内容

textarea.setText(new String(content,0,charsRead));

} catch (FileNotFoundException e) {

System.out.println( " Can Not Find the File" );

} catch (IOException e) {

System.out.println( "Error opening File" );

}

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值