【Java AWT 图形界面编程】FileDialog 对话框 ( 打开文件 | 保存文件 | 构造函数 | 获取文件路径 | 获取文件名称 | 代码示例 )

news2024/11/15 12:26:12

文章目录

  • 一、FileDialog 对话框
    • 1、构造函数
    • 2、获取文件路径
    • 3、获取文件名称
  • 二、FileDialog 对话框代码示例





一、FileDialog 对话框



在开发时 , 经常遇到文件相关操作 , 如 : 选择文件 , 保存文件 等 , 在 AWT 中使用 FileDialog 文件对话框 实现上述功能 ;


1、构造函数


FileDialog 对话框 构造函数原型如下 :

  • Frame parent 参数 : 文件对话框 的 父窗口 ;
  • String title 参数 : 文件对话框 的 标题 ;
  • int mode 参数 : 设置 打开文件 / 保存文件 , FileDialog.LOAD 打开文件 , FileDialog.SAVE 保存文件 ;

    /**
     * Creates a file dialog window with the specified title for loading
     * or saving a file.
     * <p>
     * If the value of <code>mode</code> is <code>LOAD</code>, then the
     * file dialog is finding a file to read, and the files shown are those
     * in the current directory.   If the value of
     * <code>mode</code> is <code>SAVE</code>, the file dialog is finding
     * a place to write a file.
     *
     * @param     parent   the owner of the dialog
     * @param     title   the title of the dialog
     * @param     mode   the mode of the dialog; either
     *          <code>FileDialog.LOAD</code> or <code>FileDialog.SAVE</code>
     * @exception  IllegalArgumentException if an illegal file
     *                 dialog mode is supplied
     * @see       java.awt.FileDialog#LOAD
     * @see       java.awt.FileDialog#SAVE
     */
    public FileDialog(Frame parent, String title, int mode) {
        super(parent, title, true);
        this.setMode(mode);
        setLayout(null);
    }

2、获取文件路径


FileDialog#getDirectory() 函数用于获取 被打开 被保存 文件 的 目录名称 ;

FileDialog#getDirectory() 函数原型 :

    /**
     * Gets the directory of this file dialog.
     *
     * @return  the (potentially <code>null</code> or invalid)
     *          directory of this <code>FileDialog</code>
     * @see       java.awt.FileDialog#setDirectory
     */
    public String getDirectory() {
        return dir;
    }

3、获取文件名称


FileDialog#getFile() 函数用于获取 被打开 被保存 文件 的 文件名称 ;

FileDialog#getFile() 函数原型 :

    /**
     * Gets the selected file of this file dialog.  If the user
     * selected <code>CANCEL</code>, the returned file is <code>null</code>.
     *
     * @return    the currently selected file of this file dialog window,
     *                or <code>null</code> if none is selected
     * @see       java.awt.FileDialog#setFile
     */
    public String getFile() {
        return file;
    }




二、FileDialog 对话框代码示例



FileDialog 对话框代码示例 :

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class HelloAWT {
    public static void main(String[] args) {
        Frame frame = new Frame("AWT 界面编程");
        Box box = Box.createVerticalBox();


        FileDialog openDialog = new FileDialog(frame, "打开文件", FileDialog.LOAD);
        FileDialog saveDialog = new FileDialog(frame, "保存文件", FileDialog.SAVE);

        Button openButton = new Button("打开文件");
        Button saveButton = new Button("保存文件");

        openButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 显示 打开文件对话框
                // 提示选择 文件
                // 执行后代码会阻塞在此处
                openDialog.setVisible(true);

                // 文件选择完毕 , 就会执行后续代码
                // 获取选择的 目录名称 和 文件名称
                System.out.println("打开的文件路径 : "
                        + openDialog.getDirectory() // D:\002_Project\003_Java_Work\KotlinDemo\
                        + openDialog.getFile());    // KotlinDemo.iml
            }
        });

        saveButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 显示 保存文件对话框
                // 提示选择 保存文件的目录
                // 执行后代码会阻塞在此处
                saveDialog.setVisible(true);

                // 文件选择完毕 , 就会执行后续代码
                // 获取保存的 目录名称 和 文件名称
                System.out.println("保存文件的路径 : "
                        + saveDialog.getDirectory() // D:\002_Project\003_Java_Work\KotlinDemo\
                        + saveDialog.getFile());    // KotlinDemo.iml
            }
        });

        box.add(openButton);
        box.add(saveButton);

        frame.add(box);
        frame.pack();
        frame.setVisible(true);
    }
}

执行效果 :

运行后弹出如下界面 :
在这里插入图片描述
点击 " 打开文件 " 按钮 , 弹出如下 打开文件 对话框 , 选择要打开的文件 , 然后点击 打开按钮 , 该对话框消失 ;

在这里插入图片描述

同时会在 命令行中 打印出打开文件的路径 :

打开的文件路径 : C:\Users\octop\Desktop\用户协议.html

在这里插入图片描述


点击 保存文件 按钮 :
在这里插入图片描述

在弹出的 保存文件 对话框 中输入 文件名 1 , 然后点击保存 , 该 保存文件 对话框消失 ;
在这里插入图片描述

同时在命令行打印出 保存文件路径 ;

保存文件的路径 : C:\Users\octop\Desktop\1

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/187938.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

量子计算初创公司Oxford Ionics完成3000万英镑A轮融资

&#xff08;图片来源&#xff1a;网络&#xff09;未来&#xff0c;量子计算机会解决世界上最大的超级计算机无法解决的问题。然而&#xff0c;大规模制造量子计算机仍然是一个巨大的挑战。英国量子计算初创公司Oxford IonicsA轮融资获得的3000万英镑&#xff08;约合人民币2.…

Java集合(六)Set接口和常用方法

Set接口基本介绍&#xff1a; &#xff08;1&#xff09;无序&#xff08;添加和取出的顺序不一致&#xff09;&#xff0c;没有索引 &#xff08;2&#xff09;不允许重复元素&#xff0c;所以最多包含一个null (3)JDK API中Set接口的实现类有&#xff1a; 其中set接口的已…

2023年,最新最权威的上海Java培训机构排行榜出炉!

2022也许你的很多学习和工作计划都被打乱&#xff0c;但是过去的2022不管多艰难&#xff0c;多难熬。都已经成为过去式。2023悄然而至&#xff0c;新的一年&#xff0c;你我都该有新气象新动力&#xff0c;学习什么时候开始都不晚&#xff0c;想跨行从事软件开发、IT行业的小伙…

跳槽至今0 offer的大冤种,问题到底出在哪儿?

众所周知&#xff0c;2022年市场很难&#xff01;看着企业们纷纷裁员&#xff0c;甚至连内推这个后门都走不通&#xff01;哪怕有面试&#xff0c;都是屡屡碰壁&#xff0c;你想清楚问题出在哪了吗&#xff1f;&#x1f62d;“求职不得&#xff0c;夜不能寐&#xff1b;三更半夜…

C++基础——C++ 指针

C基础——C 指针C 指针什么是指针&#xff1f;C 中使用指针C 指针详解C Null 指针C 指针的算术运算递增一个指针递减一个指针指针的比较C 指针 vs 数组C 指向指针的指针&#xff08;多级间接寻址&#xff09;C 传递指针给函数C 指针 学习 C 的指针既简单又有趣。通过指针&…

Python语言基础学习之Python基础之列表介绍和循环遍历

今天给大家分享一些Python基础 (列表基础和循环遍历介绍)&#xff0c;一起来看看吧~ 一、列表介绍 想一想&#xff1a; 字符串可以用来存储一串信息&#xff0c;那么想一想&#xff0c;怎样存储所有同学的名字呢?定义100个变量&#xff0c;每个变量存放一个学生的姓名可行吗…

LinkedList VS ArrayList~

ArrayList VS LinkedList: One: ArrayList:基于数组&#xff0c;需要连续内存LinkedList:基于双向链表&#xff0c;无需连续内存Two: ArrayList:随机访问快(指根据下标访问)LinkedList:随机访问慢(要沿着链表遍历)点击ArrayList的源码: 点击LinkedList的源码&#xff1a; Ar…

九龙证券|看好2-4月份汽车月度销量增速的逐月改善

机构指出&#xff0c;考虑到22年末购置税补助等方针到期&#xff0c;叠加春节假期消费需求的提早&#xff0c;估计年内乘用车销量绝对值及同比增速均于1月触底&#xff0c;后续方针影响、消费回暖等一期效果下&#xff0c;看好车市回暖&#xff0c;估计销量增速将于2-4月逐月回…

15.Set系列,可变参数、Collections

目录 一.Set系列 1.1 Set系列集合特点 1.2 Set集合实现类特点 1.3 HashSet 1.3.1 特点 1.3.2 优点 1.3.3 在理解原理之前要知道的几个概念。 1.3.4 底层原理 1.3.5 哈希表的形成过程/元素的存入过程&#xff08;Jdk8的版本&#xff09; 1.3.6 注意事项 1.4 linkedHa…

通用数字支付网络(UDPN)于达沃斯论坛期间正式发布

2023年1月19日&#xff0c;在瑞士达沃斯举行的世界经济论坛 (WEF) 会议期间&#xff0c;通用数字支付网络 (Universal Digital Payment Network, UDPN)正式对外发布。 近年来&#xff0c;全球各国央行数字货币&#xff08;CBDC&#xff09;得到了广泛的关注与长足的进步&#…

WebHooks

webhook 究竟是什么呢&#xff1f; Webhook是一个API概念&#xff0c;webhoo是一种web回调或者http的push API。Webhook作为一个轻量的事件处理应用&#xff0c;正变得越来越有用。 具体的说&#xff0c;webhook 是应用给其它应用提供实时信息的一种方式。信息一产生&#xf…

Js如何实现当网页超过一屏时导航菜单始终置顶-吸顶盒效果

前言我们平时在逛一些电商网站时,无论是首页还是详情页,通常会有一个导航菜单石红跟随着页面,无论是页面滚动到中间还是底部这是为了方便用户查看商品的各类信息或提交订单购物也就是吸顶盒效果,那这个效果是怎么实现的?原生Js如下是原生js// 初始化函数 function init() {// …

[Pytorch] CIFAR-10数据集的训练和模型优化

本篇文章借鉴了我的朋友Jc的报告&#xff0c;他是一个十分优秀的人。 本篇文章记录了第一次完整训练优化的过程 0 关于数据集 在CIFAR-10 dataset的介绍中&#xff0c;cifar-10数据集一共10类图片&#xff0c;每一类有6000张图片&#xff0c;加起来就是60000张图片&#xff0…

深度卷积对抗神经网络 基础 第五部分 Inception-v3 architecture GANs

深度卷积对抗神经网络 基础 第五部分 Inception-v3 architecture GANs 对抗神经网络能够产生不存在的图片&#xff0c;换脸或者生成一些艺术品&#xff0c;这些有趣和强大的对抗神经网络的能力不仅能够创造价值&#xff0c;还能够用来犯罪。With Great Power , Comes With Res…

3.1.1 类和对象

文章目录1.类2.对象3.类和对象的关系4.类的创建使用5.对象在内存中的存储过程6.对象创建过程分析1.类 java最基本的单位就是类&#xff0c;可以理解为类型类是一类事物的抽象可以理解为模板或者设计图纸 注意:类在现实世界并不存在,它只是一种对象的数据类型。例如乌鸦&#…

如何使用DevExpress WPF组件实现异步加载TreeList节点?建议收藏

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。在本文中&#xff0c;我…

PADS Layout封装创建时批量放置焊盘的方法

批量放置焊盘一般是在BGA封装的是用的比较多&#xff0c;当然对于一些普通贴片焊盘也是挺常用的。 1、第一步&#xff1a;打开PCB封装编辑器&#xff0c;进入到封装编辑界面&#xff0c;放置焊盘后&#xff0c;点击焊盘右键“分步与重复”既可。2、第二步&#xff1a;点击以后弹…

常见的锁策略和synchronized的锁机制

文章目录一. 常见的锁策略1. 乐观锁和悲观锁2. 轻量级锁和重量级锁3. 自旋锁和挂起等待锁4. 普通互斥锁和读写锁5. 公平锁和非公平锁6. 可重入锁和不可重入锁二. synchronized的锁机制1. 锁升级/锁膨胀2. 锁消除3. 锁粗化一. 常见的锁策略 1. 乐观锁和悲观锁 乐观锁和悲观锁主…

C++ | 数据结构与算法 | 最小生成树算法讲解 | Kruskal Prim

文章目录前言Kruskal算法Prim算法前言 讲解之前&#xff0c;我们需要先明白连通图是指什么&#xff1f;连通图具有以一个顶点为起点可以到达该图中的任意一个顶点的特性&#xff0c;就算它们不直接相连&#xff0c;但是它们之间至少有一条可以递达的路径。并且连通图是针对无向…

劳务派遣协议范本整理版模板范本

劳务派遣协议范本整理版 甲方&#xff08;用工单位&#xff09;&#xff1a;______ 法定代表人&#xff1a;____________ 地址&#xff1a;__________________ 电话&#xff1a;__________________ 传真&#xff1a;__________________ 乙方&#xff08;派遣单位&#xf…