简单的打开 保存文件 小记事本
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class MenuDemo
{
private Frame f;
//菜单组件 可添加菜单项及菜单组件
private Menu m,m1,m2;
//菜单栏
private MenuBar mb;
//菜单项
private MenuItem closeMenu,mi2,mi3,openItem,saveItem;
private FileDialog openDia,saveDia;
private TextArea ta;
File file = null;//文件对象
MenuDemo()
{
init();
}
public void init()
{
f = new Frame("菜单练习");
//窗体设置
f.setBounds(200,100,600,600);
//f.setLayout(new FlowLayout());//frame默认边界布局
mb = new MenuBar();
m = new Menu("文件");
m1 = new Menu("一级菜单");
m2 = new Menu("二级菜单");
closeMenu = new MenuItem("退出");
mi2 = new MenuItem("二级菜单项");
mi3 = new MenuItem("三级退出");
openItem = new MenuItem("打开");
saveItem = new MenuItem("保存");
saveItem.setShortcut(new MenuShortcut(KeyEvent.VK_S));//添加快捷命令
//打开 保存 对话框
openDia = new FileDialog(f,"打开",FileDialog.LOAD);
saveDia = new FileDialog(f,"保存",FileDialog.SAVE);
//文本框
ta = new TextArea();
//将菜单相关组件 添加到窗体
f.setMenuBar(mb);//窗体添加菜单栏setMenuBar()
mb.add(m);//MenuBar菜单栏中只能添加Menu不可以添加Menu的父类MenuItem
m.add(openItem);
m.add(saveItem);
//m.addSeparator();//添加分割线
m.add(m1);
m1.add(m2);
m1.add(mi2);
//m2.add(closeMenu);
m2.add(mi3);
m.add(closeMenu);
f.add(ta);
/*
代码添加顺序就是图形的顺序 一个菜单项只有一个图形显示 当第二次添加同一个菜单项的时候
之前添加此菜单项的语句被覆盖 或者说 失效
*/
myEvent();
f.setVisible(true);
}
public void myEvent()
{
//为窗体添加 监听器
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
//为菜单项 添加监听器
closeMenu.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
mi3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
openItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
openDia.setVisible(true);
//打开文本文件 显示内容在文本框
String dirPath = openDia.getDirectory();
String fileName = openDia.getFile();
System.out.println(dirPath+"...."+fileName);
file = new File(dirPath,fileName);
if(dirPath==null||fileName==null)
return;
ta.setText("");
BufferedReader bfr = null;//局部变量必须赋初始值
try
{
bfr = new BufferedReader(new FileReader(file));
String line = null;
while ((line = bfr.readLine())!=null)
{
//System.out.println(line);
ta.append(line+"\r\n");//不要忘记添加换行符号
}
}
catch (IOException io)
{
throw new RuntimeException("读取失败!");
}
finally
{
try
{
if(bfr!=null)
bfr.close();
}
catch (IOException ec)
{
throw new RuntimeException("guan失败!");
}
}
}
});
//为保存按钮添加监听 通过监听事件 执行动作:保存文本 到文件
saveItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
if(file==null)
{
saveDia.setVisible(true);
String dirPath = saveDia.getDirectory();
String fileName = saveDia.getFile();
file = new File(dirPath,fileName);
}
BufferedWriter bfw = null;
try
{
bfw = new BufferedWriter(new FileWriter(file));
String text = ta.getText();//返回文本组件内的文本
bfw.write(text);
bfw.flush();
}
catch (IOException ec)
{
throw new RuntimeException();
}
finally
{
try
{
if(bfw!=null)
bfw.close();
}
catch (IOException ec)
{
throw new RuntimeException("guan失败!");
}
}
}
});
}
public static void main(String[] args)
{
new MenuDemo();
}
}
转载于:https://blog.51cto.com/jiangzuun2014/1440430