黑马程序员——GUI(3)菜单FileDialog

2023-10-05 02:01

本文主要是介绍黑马程序员——GUI(3)菜单FileDialog,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

------- android培训、 java培训、期待与您交流! ----------

总的来说,Memu建立在Menubar上,MenuItem建立在Menu上。

如果想给一个程序增加一个菜单条,就需要新建一个Menubar,然后再在Menubar上编辑菜单。

一个Menubar上可以有多个Menu,每个Menu上可以添加MenuItem也就是菜单项,或者是添加一个子菜单Menu,形成多级菜单。


注意:其他组件,以及Menu和MenuItem。添加使用的是add方法,但是MenuBar添加到窗体使用的是setMenuBar(MenuBar mb);

=======================================================================================

FileDialog是Dialog的子类,继承了其特点,但是可以通过FileDialog选择一个文件位置,以便之后打开或者保存。

1.创建:

FileDialog f=new FileDialog(frmBase,mode);//mode指示这个文件对话框是打开还是保存文件

FileDialog.SAVE

FileDialog.LOAD

2.获取文件信息(为什么Dialog没有类似的方法!)

 String getDirectory() 
          获取此文件对话框的目录。
 String getFile() 
          获取此文件对话框的选定文件。

3.注意事项:

if(null==fd.getDirectory()||null==fd.getFile())
return;
fText=new File(fd.getDirectory(),fd.getFile());

在获取FileDialog选择的文件信息时,一定要先判断目录和文件是否能获取到,因为有时候打开对话框可能会不选择文件而关闭。

如果不先判断则第二句就会异常了。


练习:

/*
MenuBar
MenuItem|--Menumenu添加到menubar上menuitem添加到menu上子菜单即是一组菜单项的集合。可以添加在菜单上,形成多级菜单*/
package test;
import java.awt.*;
import java.awt.event.*;
import java.io.*;class MenuDemo
{private Frame f;private MenuBar mb;private Menu mRoot;private MenuItem miOpen,miSave,miSaveAs,miClose;private TextArea taEditArea,taStatus;private Label l;private File fText;	MenuDemo(){wndInit();		}private void wndInit(){f=new Frame("Menu Demo");f.setBounds(300,200,600,500);//f.setLayout(new FlowLayout());regfListener();//新建一个菜单条mb=new MenuBar();//新建一个菜单mRoot=new Menu("File");mb.add(mRoot);//新建一个菜单项miOpen=new MenuItem("Open");mRoot.add(miOpen);regmiOpenListner();miSave=new MenuItem("Save");mRoot.add(miSave);regmiSaveListner();miSaveAs=new MenuItem("SaveAs");mRoot.add(miSaveAs);regmiSaveAsListner();Menu mSublv1=new Menu("Menu Lv1");mRoot.add(mSublv1);MenuItem milv1Item1 =new MenuItem("MenuItem Lv1 1");mSublv1.add(milv1Item1);MenuItem milv1Item2 =new MenuItem("MenuItem Lv1 2");mSublv1.add(milv1Item2);Menu mSublv2=new Menu("Menu Lv2");mSublv1.add(mSublv2);MenuItem milv2Item1 =new MenuItem("MenuItem Lv2 1");mSublv2.add(milv2Item1);	miClose=new MenuItem("Close");mRoot.add(miClose);regmiCloseListner();//f.add(mb);/*框架添加菜单不是用add方法,而是setMenuBar(MenuBar )			*/f.setMenuBar(mb);taEditArea=new TextArea();f.add(taEditArea,BorderLayout.CENTER);			//添加一个文本区做状态栏,显示当前打开的文件//taStatus=new TextArea(null,0,0,TextArea.SCROLLBARS_NONE);//f.add(taStatus,BorderLayout.SOUTH);l=new Label();f.add(l,BorderLayout.SOUTH);f.setVisible(true);	}private void regfListener(){f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){newPrint("windowClosing!");System.exit(0);}});}private void regmiCloseListner(){miClose.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){newPrint("closed by Button:miClose");System.exit(0);}});}private void regmiOpenListner(){miOpen.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){/*public FileDialog(Frame/Dialog ,String ,int mode)mode:FileDialog.LOAD  FileDialog.SAVE*/				FileDialog fd=new FileDialog(f,"OPEN",FileDialog.LOAD);fd.setVisible(true);//在获取FileDialog选择的文件信息时,一定要先判断目录和文件是否能获取到,因为有时候打开对话框可能会不选择文件而关闭。//如果不先判断则第二句就会异常了。if(null==fd.getDirectory()||null==fd.getFile())return;fText=new File(fd.getDirectory(),fd.getFile());						newPrint("going to open the file: "+fText.toString());showFile(fText);}});}private void showFile(File fText){l.setText(fText.toString());taEditArea.setText("");try{BufferedReader bin=new BufferedReader(new FileReader(fText));String tmpLine=null;while(null!=(tmpLine=bin.readLine())){taEditArea.append(tmpLine+"\r\n");}bin.close();	}catch(IOException ioe){}		}	private void regmiSaveListner(){miSave.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){				if(null==fText){if(!setSaveFilePath())return;		}				newPrint("going to save the file at: "+fText.toString());saveFile(fText);				}			});}	private void regmiSaveAsListner(){miSaveAs.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){				if(!setSaveFilePath())return;				newPrint("going to save the file at: "+fText.toString());saveFile(fText);				}			});}private Boolean setSaveFilePath(){FileDialog fd=new FileDialog(f,"SAVE",FileDialog.SAVE);				fd.setVisible(true);	if(null==fd.getDirectory()||null==fd.getFile()){newPrint("here2");return false;}fText=new File(fd.getDirectory(),fd.getFile());			return true;}private void saveFile(File fText){try{BufferedWriter bout=new BufferedWriter(new FileWriter(fText));bout.write(taEditArea.getText());	bout.close();}catch(IOException e){}				}public static void main(String[] args){new MenuDemo();newPrint("console thread");}public static void newPrint(Object obj){System.out.println(obj);}
}


这篇关于黑马程序员——GUI(3)菜单FileDialog的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/3162

相关文章

禁止平板,iPad长按弹出默认菜单事件

通过监控按下抬起时间差来禁止弹出事件,把以下代码写在要禁止的页面的页面加载事件里面即可     var date;document.addEventListener('touchstart', event => {date = new Date().getTime();});document.addEventListener('touchend', event => {if (new

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

Windows如何添加右键新建菜单

Windows如何添加右键新建菜单 文章目录 Windows如何添加右键新建菜单实验环境缘起以新建`.md`文件为例第一步第二步第三步 总结 实验环境 Windows7 缘起 因为我习惯用 Markdown 格式写文本,每次新建一个.txt后都要手动修改为.md,真的麻烦。如何在右键新建菜单中添加.md选项呢? 网上有很多方法,这些方法我都尝试了,要么太麻烦,要么不凑效

Golang GUI入门——andlabs ui

官方不提供gui标准库,只好寻求第三方库。 https://github.com/google/gxui 这个gui库是谷歌内部人员提供的,并不是谷歌官方出品,现在停止维护,只好作罢。 第三方gui库 找了好多,也比较了好多,最终决定使用的是还是 https://github.com/andlabs/ui 相信golang gui还会发展的更好,期待更优秀的gui库 由于andlabs

LabVIEW程序员是怎样成长为大佬

成为一名LabVIEW编程领域的“大佬”需要时间、实践、学习和解决复杂问题的经验。尽管LabVIEW作为一种图形化编程语言在初期可能相对容易上手,但要真正成为精通者,需要在多个层面上深入理解。以下是LabVIEW程序员如何逐步成长为“大佬”的路径: 1. 打好基础 LabVIEW的大佬们通常在初期会打下非常坚实的基础,理解LabVIEW编程的核心概念,包括: 数据流编程模型:Lab

GUI编程08:画笔paint

本节内容视频链接:10、画笔paint_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1DJ411B75F?p=10&vd_source=b5775c3a4ea16a5306db9c7c1c1486b5 package com.yundait.lesson03;import java.awt.*;import java.awt.event.Wind

C++入门(06)安装QT并快速测试体验一个简单的C++GUI项目

文章目录 1. 清华镜像源下载2. 安装3. 开始菜单上的 QT 工具4. 打开 Qt Creator5. 简单的 GUI C++ 项目5.1 打开 Qt Creator 并创建新项目5.2 设计界面5.3 添加按钮的点击事件5.4 编译并运行项目 6. 信号和槽(Signals and Slots) 这里用到了C++类与对象的很多概念 1. 清华镜像源下载 https://

程序员必备心理学——心流

心理学之心流 前言一、“心流”是什么?二、心流的好处二、如何进入心流心流状态的四个阶段第一个阶段:挣扎第二个阶段:放松第三个阶段:心流第四个阶段:巩固 进入心流的技巧 总结题外话 前言 你是否常常感觉自己明明学习了一整天,但是就是感觉没有太多的收获。这个时候除了你的学习方向等问题之外,也可能是你的学习方法太低效了。作者本人就经常有这种情况,好在偶然间在b站刷到一个大佬的这个心

程序员都在使用的画图工具

大家好,我是袁庭新。 程序员都在使用的画图工具,你一定没用过这款画图工具吧!我教程中的架构图都是用它来画的。 比如我编写的RDB工作原理图就是用draw.io绘制的,如下图所示: 再例如Redis集群故障恢复原理图我也是通过draw.io工具绘制的,如下图所示: 是不是觉得draw.io绘制的图形特别简洁、美观。它的官网是: https://www.drawio.com dra

Git Gui 查看分支历史的时候中文显示乱码

如图所示 在Git Gui工具栏上选择-编辑-选项: 选择:Default File Contents Encoding, change为UTF-8 成功: