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();
}}
GUI类制作的记事本小程序
最新推荐文章于 2023-08-22 17:00:24 发布