本帖最后由 zhoubinjian 于 2016-4-30 03:10 编辑
/*
需求:点击菜单栏的打开(load),弹出对话框,选择文本,编写内容然后再保存,当没有此文件时,新建一个,有的话就保存覆盖原内容
*/
package myMenu;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class Demo
{
private Frame f;//显示窗口
private TextArea ta;//文本框
private FileDialog load;
private FileDialog save;
//菜单
private MenuBar mb;//菜单栏
private Menu m;//菜单(是属于菜单栏中的)
private MenuItem closeItem,item,item1;//菜单项(是属于菜单 中的)
private File file;
Demo()
{
init();
}
public void init()
{
f=new Frame("my window");
f.setBounds(600,400,800,600);
//f.setLayout(new FlowLayout());//不设置布局,默认边界布局
ta=new TextArea();
//初始化菜单
mb=new MenuBar();
m=new Menu("文件");
closeItem=new MenuItem("退出");
item=new MenuItem("打开");
item1= new MenuItem("保存");
load=new FileDialog(f,"我要打开",FileDialog.LOAD);
save=new FileDialog(f,"我要保存",FileDialog.SAVE);
f.add(ta);
//添加菜单
f.setMenuBar(mb);//在显示窗口中添加菜单栏是通过setMenuBar()方法
mb.add(m);
m.add(item);
m.add(item1);
m.add(closeItem);
myEvent();//调用事件监听
f.setVisible(true);//窗口默认是隐藏的,需要调用此函数才能显示窗口
}
public void myEvent()//事件监听函数
{
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);//退出程序
}
});
item.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
load.setVisible(true);
String getPath=load.getDirectory();
String getName=load.getFile();
if(getPath==null || getName==null)
return ;
ta.setText("");//获取到目录和文件名就清空文本框 的内容
file=new File(getPath,getName);
try
{
BufferedReader bufr=new BufferedReader(new FileReader(file));
String line=null;
while((line=bufr.readLine())!=null)
{
ta.append(line+"\r\n");//append()方法,当添加内容时,会在原有内容的末尾加入
}
bufr.close();
}
catch (IOException ex)
{
throw new RuntimeException();
}
}
});
item1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(file==null)//如果文件不存在,就新建一个,如果存在,则直接用缓冲区读取
{
save.setVisible(true);
String getPath=save.getDirectory();//获取目录
String getName=save.getFile();//获取文件名
if(getPath==null || getName==null)//没有选择文件时,不做任何处理
return ;
file=new File(getPath,getName);//将目录,文件名封装成对象
}
try
{
BufferedWriter bufr=new BufferedWriter(new FileWriter(file));//读取文件(目录+文件名)
String text=ta.getText();//将文本框的内容获取到
bufr.write(text);//将获取到的文件内容写入到文件并覆盖
bufr.close();
}
catch (IOException ex)
{
throw new RuntimeException();
}
}
});
closeItem.addActionListener(new ActionListener()//动作监听,按下菜单中的 退出键 退出程序
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
}
public static void main(String[] args)
{
new Demo();
}
} |
|