专栏首页陶士涵的菜地[javaSE] GUI(打开文件对话框)

[javaSE] GUI(打开文件对话框)

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

}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [javaSE] GUI(对话框Dialog)

    获取Dialog对象,new出来,构造参数:Frame对象,String的标题,模式

    陶士涵
  • [javaSE] GUI(菜单)

    调用Frame对象的setMenuBar()方法,设置菜单,参数:MenuBar对象

    陶士涵
  • [javaSE] GUI(练习-列出指定目录内容)

    陶士涵
  • [javaSE] GUI(练习-列出指定目录内容)

    陶士涵
  • [javaSE] GUI(菜单)

    调用Frame对象的setMenuBar()方法,设置菜单,参数:MenuBar对象

    陶士涵
  • [javaSE] GUI(对话框Dialog)

    获取Dialog对象,new出来,构造参数:Frame对象,String的标题,模式

    陶士涵
  • Java 中 RMI、JNDI、LADP、JRMP、JMX、JMS那些事儿(上)

    之前看了SHIRO-721这个漏洞,然后这个漏洞和SHIRO-550有些关联,在SHIRO-550的利用方式中又看到了利用ysoserial中的JRMP exp...

    Seebug漏洞平台
  • 高度不平衡的数据的处理方法

    慕白
  • 云服务模型:控制与规模经济的博弈

    感谢支持ayqy个人订阅号,每周义务推送1篇(only unique one)原创精品博文,话题包括但不限于前端、Node、Android、数学...

    ayqy贾杰
  • JS编写的银行木马是怎样的存在?一起逆向来看看

    Gootkit——在一些地方也被称为Xswkit ,是一款几乎完全用JavaScript编写的银行恶意软件。在这篇博客,我们将逆向该恶意软件,解密其webinj...

    FB客服

扫码关注云+社区

领取腾讯云代金券