如何用java的GUI编写一个记事本

2024-12-02 15:25:30
推荐回答(1个)
回答1:

很久之前写过的,凑合着看吧,

package 个人练习;

import java.awt.FileDialog;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Writer;
import java.sql.Savepoint;

import javax.swing.JFrame;
/**
 * 创建一个类似记事本的程序
 * 该程序拥有自己的书写窗口
 * 可以自定义保存地址
 * @author Administrator
 *
 */
/*
 * 创建记事本类
 * 实现ActionListener接口
 * 重写它的actionPerformed方法
 * 
 */
public class JiShiBen implements ActionListener {
        //拥有自己的窗口
JFrame frame=new JFrame("记事本程序");
//菜单栏
MenuBar menubar=new MenuBar();
//创建下拉菜单
Menu wenjian=new Menu("文件");
//创建保存按钮
MenuItem dakai=new MenuItem("打开文件");
MenuItem baochun=new MenuItem("保存");
MenuItem xinjian=new MenuItem("新建");
//创建可以显示文本的多行区域
TextArea wenben=new TextArea();
//显示一个对话窗口,用户选择一个文件,如果模式是SAVE,则寻找一个地方去写入一个文件
FileDialog fd;
File file=null;
/*
 * 创建jishiben的构造函数
 */

public  JiShiBen(){
frame.setMenuBar(menubar);//将菜单栏关联到窗口
menubar.add(wenjian);//将下拉菜单添加到菜单栏
wenjian.add(xinjian);
wenjian.add(dakai);//将保存按钮添加到下拉菜单
wenjian.add(baochun);

dakai.addActionListener(this);//由baochuan按钮接受处理操作事件
baochun.addActionListener(this);
xinjian.addActionListener(this);
frame.add(wenben);//将文本区域添加到窗口
//设置窗口的属性
frame.setSize(600,480);
frame.setLocation(200, 200);
frame.setVisible(true);
/*
 * 
 * 用于接收窗口事件的侦听器接口。
 * 旨在处理窗口事件的类要么实现此接口(及其包含的所有方法),
 * 要么扩展抽象类 WindowAdapter(仅重写所需的方法)。
 * 然后使用窗口的 addWindowListener 方法将从该类所创建
 * 的侦听器对象向该 Window 注册。
 * 当通过打开、关闭、激活或停用、
 * 图标化或取消图标化而改变了窗口状态时,
 * 将调用该侦听器对象中的相关方法,
 * 并将 WindowEvent 传递给该方法。 
 * windowClosing(WindowEvent e) 
        用户试图从窗口的系统菜单中关闭窗口时调用。
 *  
 */

frame.addWindowListener(new WindowAdapter() {
 public void windowClosing(WindowEvent e) {
 System.exit(0);//终止当前运行的java虚拟机
 }
});
}

/*
 * 实现ActionListener接口中的方法
 * (non-Javadoc)
 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
 */
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==baochun){
//public Object getSource()最初发生 Event 的对象。 返回,最初发生 Event 的对象。
fd=new FileDialog(frame,"保存文本文件",FileDialog.SAVE);
/*
 * FileDialog(Dialog parent, String title, int mode) 
          创建一个具有指定标题的文件对话框窗口,用于加载或保存文件。
          
    static int LOAD 
          此常量值指示文件对话框窗口的作用是查找要读取的文件。 
    static int SAVE 
          此常量值指示文件对话框窗口的作用是查找要写入的文件。 

 */
fd.setVisible(true);
//文件的存放位置是通过fd获取的位置,文件名是通过fd获取的文件名
file=new File(fd.getDirectory(), fd.getFile()+".txt");
save(file);
}
if(e.getSource()==dakai){
fd=new FileDialog(frame,"打开文件",FileDialog.LOAD);
fd.setVisible(true);
/*
 * String getFile() 
          获取此文件对话框的选定文件。 
   String getDirectory() 
          获取此文件对话框的目录。        
 */
file=new File(fd.getDirectory()+fd.getFile());
System.out.println(fd.getFile());
System.out.println(fd.getDirectory());
open(file);
}
if(e.getSource()==xinjian){
wenben.setText("");
}
}

/*
 * 创建save方法
 */
public void save(File file){
try{
PrintWriter pw=new PrintWriter(file);
pw.write(wenben.getText());//wenben.getText()返回文本区域的文本
pw.close();
}catch(Exception e){
}
}
//创建open方法
public void open(File file){
try{
FileInputStream fis=new FileInputStream(file);
InputStreamReader isr=new InputStreamReader(fis);
BufferedReader br=new BufferedReader(isr);
    String line=null;
while((line=br.readLine())!=null){
wenben.append(line+"\n");
}
br.close();

}catch(Exception e){

}
}
public static void main(String[] args) {
new JiShiBen();
}


}