JAVA--GUI:MenuBar与FileDialog组件,案例:仿写简易文本编辑器
程序员文章站
2022-03-26 14:40:25
...
常用方法
FileDialog 类显示一个对话框窗口,用户可以从中选择文件。
FileDialog(Frame parent, String title, int mode):创建一个具有指定标题的文件对话框窗口,用于加载或保存文件。
参数:
parent - 对话框的所有者
title - 对话框的标题
mode - 对话框的模式,可以是 FileDialog.LOAD 或 FileDialog.SAVE
String getDirectory():获取此文件对话框的目录。
String getFile():获取此文件对话框的选定文件。
File(String parent, String child):根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
编码
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class MenuTest{
// 初始化组件
private Frame f;
private MenuBar bar;
private TextArea ta;
private Menu fileMenu;
private MenuItem openItem,saveItem,closeItem;
// 选择对话框组件
private FileDialog openDia,saveDia;
private File file;
MenuTest(){
init(); // 页面初始化
}
public void init(){
f=new Frame("我的简易记事本");
f.setBounds(300,100,650,600);
bar=new MenuBar(); // 菜单栏
ta=new TextArea(); // 文本域
fileMenu =new Menu("文件"); // 菜单
openItem=new MenuItem("打开"); // 菜单项
saveItem=new MenuItem("保存"); // 菜单项
closeItem=new MenuItem("退出"); // 菜单项
fileMenu.add(openItem); // 把菜单项添加到菜单中
fileMenu.add(saveItem); // 把菜单项添加到菜单中
fileMenu.add(closeItem); // 把菜单项添加到菜单中
bar.add(fileMenu); // 把菜单添加到菜单栏中
f.setMenuBar(bar);
// 初始化选择对话框
openDia=new FileDialog(f,"我要打开",FileDialog.LOAD);
saveDia=new FileDialog(f,"我要保存",FileDialog.SAVE);
f.add(ta); // 添加文本域到窗口
myEvent(); // 加载事件
f.setVisible(true);
}
public void myEvent(){
saveItem.addActionListener(new ActionListener(){ // 菜单"保存"按钮点击事件
public void actionPerformed(ActionEvent e){
saveDia.setVisible(true); // 打开保存选择对话框
String dirPath=saveDia.getDirectory();
String fileName=saveDia.getFile();
// System.out.println(dirPath+"..."+fileName);
if(dirPath==null || fileName==null)
return;
file=new File(dirPath,fileName);
try{
// 写入文件
BufferedWriter bufw=new BufferedWriter(new FileWriter(file));
String text=ta.getText(); // 获取文本域文本
bufw.write(text);
// bufw.flush(); // 刷新缓冲区
bufw.close(); // 关闭写入流
}catch(IOException ex){
throw new RuntimeException("写入失败!");
}
}
});
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);
if(dirPath==null || fileName==null)
return;
ta.setText("");
file=new File(dirPath,fileName);
try{
// 读取源文件
BufferedReader bufr=new BufferedReader(new FileReader(file));
String line=null;
while((line=bufr.readLine())!=null){
ta.append(line+"\r\n"); // 写到文本域组件中
}
bufr.close(); // 关闭读取流
}catch(IOException ex){
throw new RuntimeException("读取失败!");
}
}
});
closeItem.addActionListener(new ActionListener(){ // 菜单"退出"按钮点击事件
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
f.addWindowListener(new WindowAdapter(){ // 关闭窗口事件
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public static void main(String[] args){
new MenuTest();
}
}
上一篇: Three.js骨骼笔记