使用FileDialog可以打开文件对话框,根据模式不同,可以分为打开文件和保存文件对话框

获取FileDialog对象,new出来,参数:所属Frame对象,String的标题,FileDialog.LOAD

给MenuItem对象设置点击事件,点击事件中,调用FileDialog对象的setVisible(true)方法

调用FileDialog对象的getDirectory()方法,得到String的目录

调用FileDialog对象的getFile()方法,得到String的文件名称

选中文件后,在文本域中显示出来

获取TextArea对象,用来显示文本字符

获取到File对象,构造参数:String目录,String文件名

读取字符流数据,显示出来

import java.awt.FileDialog;
import java.awt.Frame;
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.io.BufferedReader;
import java.io.File;
import java.io.FileReader; public class MenuBarDemo {
private Frame frame;
private MenuBar menuBar;
private Menu menu;
private Menu subMenu;
private MenuItem menuItem,openFileBtn;
private FileDialog openFile;
private TextArea ta;
public MenuBarDemo() {
init();
addEvents();
} public void init() {
frame = new Frame("菜单测试");
frame.setBounds(300, 200, 500, 400);
// 菜单栏
menuBar = new MenuBar();
// 菜单
menu = new Menu("文件");
// 菜单项
openFileBtn=new MenuItem("打开");
menuItem = new MenuItem("退出");
// 菜单添加菜单项
menu.add(openFileBtn);
menu.add(menuItem);
// 菜单栏添加菜单
menuBar.add(menu);
frame.setMenuBar(menuBar);
//文本域
ta=new TextArea();
frame.add(ta); frame.setVisible(true); } public void addEvents(){
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
//菜单点击
menuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
//打开文件
openFileBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
openFile=new FileDialog(frame, "打开文件", FileDialog.LOAD);
openFile.setVisible(true);
String dirName=openFile.getDirectory();
String fileName=openFile.getFile();
System.out.println(dirName); //读取展示文件
if(dirName==null || fileName==null){
return;
}
File file=new File(dirName,fileName);
try {
BufferedReader br=new BufferedReader(new FileReader(file));
String line;
StringBuilder text = new StringBuilder();
while((line=br.readLine()) != null){
text.append(line);
text.append("\r\n");
}
ta.setText(text.toString());
} catch (Exception e1) {
e1.printStackTrace();
} }
});
} /**
* @param args
*/
public static void main(String[] args) {
new MenuBarDemo();
} }

[javaSE] GUI(打开文件对话框)的更多相关文章

  1. java中文件保存、打开文件对话框

    package com.soft.test; //AWT: FileDialog类 + FilenameFilter类 可以实现本功能 //Swing: JFileChooser类 + FileFil ...

  2. QT 打开文件对话框汇总

    Qstring fileName = QFileDialog::getOpenFileName(this, tr("open file"), " ",  tr( ...

  3. C# OpenFileDialog打开文件对话框(详解)

    一.打开文件对话框(OpenFileDialog) 1. OpenFileDialog控件的基本属性 InitialDirectory:对话框的初始目录 Filter: 获取或设置当前文件名筛选器字符 ...

  4. Qt打开文件对话框

    项目中需要打开文件对话框,就查了一下,不得不说Qt的帮助文档做的真好,非常详细.要实现这个功能有两种方式,使用QFileDialog的静态方法,实例化QFileDialog对象. 基本算是照抄帮助文档 ...

  5. WebBrowser自动填充打开文件对话框

    WebBrowser自动填充打开文件对话框   在使用WebBrowser编写自动表单填写软件的时候,不知道大家是否遇到国填写文件选择表单的情况.遇到这种情况的时候,无法直接队Html元素赋值,必须模 ...

  6. win10 只要打开文件对话框就卡死解决方法

    我电脑的问题是:win10系统,只要打开 文件对话框就卡死,假死,cpu100% 一直没有解决,但是只要把缩略图关了,就ok. 但是又想要留着缩略图,还是得显示,于是乎一直在找解决办法. 此方法好像可 ...

  7. MFC程序打开文件对话框出错的问题解决

    前几天从网上下了个图像分析的mfc小程序,是VC6的 用VC6在本地编译生成都没问题.执行起来弹出一个未处理的错误,程序崩溃退出. 想起来原来遇到过打开文件对话框方面的问题,当时项目时间紧张未能深究. ...

  8. 打开文件对话框在xp和win7上的实现文件任意多选

    作者:朱金灿 来源:http://blog.csdn.net/clever101 在xp系统上进行文件多选,实际上其文件字符串数组的缓冲区是有限,并不能支持选择任意多个文件,为此以前我还写过一篇文章: ...

  9. VS2012下自定义打开文件对话框

    VS2012下自定义打开文件对话框,MFC的CFileDialog封装了太多,太复杂,绕得头晕,自己封装一个得了 #pragma once #include <objbase.h> #in ...

随机推荐

  1. 【12c OCP】CUUG OCP认证071考试原题解析(36)

    36.choose the best answer View the Exhibits and examine the structures of the PRODUCTS, SALES, and C ...

  2. 循环语句(循环for与while等)

    1.1for循环 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  3. Hibernate 框架学习

    什么是hibernate框架? 1.它是应用在javaee 三层架构中的dao层 它的底层就是JDBC 它对JDBC进行了封装,好处就是不用写jdbc的代码,和sql语句,它是一个开源的轻量级框架,现 ...

  4. LOJ#6049. 「雅礼集训 2017 Day10」拍苍蝇(计算几何+bitset)

    题面 传送门 题解 首先可以用一个矩形去套这个多边形,那么我们只要枚举这个矩形的左下角就可以枚举完所有多边形的位置了 我们先对每一个\(x\)坐标开一个\(bitset\),表示这个\(x\)坐标里哪 ...

  5. tomcat 线程模型

    最近看到了内网ATA上的一篇断网故障时Mtop触发tomcat高并发场景下的BUG排查和修复(已被apache采纳),引起了我的好奇,感觉原作者对应底层十分了解,写的很复杂.原来对于tomcat的线程 ...

  6. [转] YUM 源优先级插件:Yum Priorities

    Linux 发行版比较多,同时还有很多个人或组织维护了某些特定用途的安装/升级源.Yum Priorities 插件可以用来强制保护源.它通过给各个源设定不同的优先级,使得系统管理员可以将某些源(比如 ...

  7. Mixnode 让操作网络资源和数据库一样简单,不一样的爬虫!

    简评: hacker news 上刷的一篇文章,可以使用类似操作数据库的方式访问网络上的资源,可以大大简化爬虫的代码. Mixnode 将网络变成了一个巨大的数据库!换句话说,Mixnode 允许您将 ...

  8. docker安装Tomcat软件,部署项目

    1 搜索tomcat镜像 $ sudo docker search tomcat NAME DESCRIPTION STARS OFFICIAL AUTOMATED tomcat Apache Tom ...

  9. Oracle数据库学习(四):学习中的遇到的问题

    一.xhost图形化界面安装问题 问题1:运行xhost +命令,出现命令没有找到错误 原因:Linux系统没有安装xhost图形化包. 解决办法:安装xhost图形化包,命令如下: yum what ...

  10. GeneXus学习笔记——入门篇

    使用GeneXus做开发做了有一段时间了 却发现一个问题(O_O)?就是除了相关的Wiki外 网上其他地方的相关资料都很少 于是乎我就想在这记录一些东西 来帮助以后会用到的人(°ー°") 那 ...