欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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();
	 }
}

 

相关标签: GUI