12.JAVA之GUI编程打开与保存文件

功能:java图形用户界面开发,练习打开保存文件

代码如下:

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.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

class MyMenuDemo {
    private Frame f;// 定义窗体
    private MenuBar bar;// 定义菜单栏
    private TextArea ta;
    private Menu fileMenu;// 定义"文件"和"子菜单"菜单
    private MenuItem openItem, saveItem, closeItem;// 定义条目“退出”和“子条目”菜单项

    private FileDialog openDia, saveDia;// 定义“打开、保存”对话框
    private File file;//定义文件

    MyMenuDemo() {
        init();
    }

    /* 图形用户界面组件初始化 */
    public void init() {
        f = new Frame("my window");// 创建窗体对象
        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);// 设置窗体可见

    }

    private void myEvent() {

        // 打开菜单项监听
        openItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                openDia.setVisible(true);//显示打开文件对话框

                String dirpath = openDia.getDirectory();//获取打开文件路径并保存到字符串中。
                String fileName = openDia.getFile();//获取打开文件名称并保存到字符串中

                if (dirpath == null || fileName == null)//判断路径和文件是否为空
                    return;
                else
                    ta.setText(null);//文件不为空,清空原来文件内容。
                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 (FileNotFoundException e1) {
                    // 抛出文件路径找不到异常
                    e1.printStackTrace();
                } catch (IOException e1) {
                    // 抛出IO异常
                    e1.printStackTrace();
                }

            }

        });

        // 保存菜单项监听
        saveItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (file == null) {
                    saveDia.setVisible(true);//显示保存文件对话框
                    String dirpath = saveDia.getDirectory();//获取保存文件路径并保存到字符串中。
                    String fileName = saveDia.getFile();////获取打保存文件名称并保存到字符串中

                    if (dirpath == null || fileName == null)//判断路径和文件是否为空
                        return;//空操作
                    else
                        file=new File(dirpath,fileName);//文件不为空,新建一个路径和名称
                }
                    try {
                        BufferedWriter bufw = new BufferedWriter(new FileWriter(file));

                        String text = ta.getText();//获取文本内容
                        bufw.write(text);//将获取文本内容写入到字符输出流

                        bufw.close();//关闭文件
                    } catch (IOException e1) {
                        //抛出IO异常
                        e1.printStackTrace();
                    }

            }

        });

        // 退出菜单项监听
        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 MyMenuDemo();
    }
}

程序截图:

12.JAVA之GUI编程打开与保存文件

时间: 2024-12-23 16:17:56

12.JAVA之GUI编程打开与保存文件的相关文章

13.JAVA之GUI编程将程序打包jar

jar基本命令: 目标:将下列MyMenuDemo.java代码打包成jar. 方法如下: 1.把java代码放到d:\myclass目录下. 2.按下快捷键ctrl+r,打开运行窗口,输入cmd后回车. 3.输入"d:"后按下回车键,进入D盘根目录. 4.输入命令:cd myclass,按下回车键. 5.编译java源码文件,输入命令javac MyMenuDemo.java,之后按下回车键执行命令. 之后删除源码MyMenuDemo.java文件. 6.编写配置信息1.txt,内容

10.JAVA之GUI编程弹出对话框Dialog

在上节基础上添加对话框显示错误信息. 代码如下: /*弹出对话框显示错误信息,对话框一般不单独出现,一般依赖于窗体.*/ /*练习-列出指定目录内容*/ import java.awt.Button; import java.awt.Dialog; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.Label; import java.awt.TextArea; import java.awt.TextField

9.JAVA之GUI编程列出指定目录内容

代码如下: /*列出指定目录内容*/ import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.TextArea; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAd

Java之GUI编程(二)——布局管理器

在上篇博客Java之GUI编程(一)中我已经对GUI编程的组件和事件做了简单介绍了,现在来看看另外一部分关于组件在各个平台是如何做到仍能保持自己合理的位置大小以及外观的. 已经说了Java是跨平台运行的,但是不同的平台对于点及坐标的定义不完全相同.而且屏幕的解析度分辨率不同也会造成位置的变化,为了确保每个组件的相对位置和大小以及外观,java就设计了布局管理器. 布局管理器是对容器中的元素进行管理,按照一定的规则排放容器里面的元素.它控制了组件的摆放. 布局管理器分类: FlowLayout:浮

Java之GUI编程

可采用的库为AWT,即abstract windowtoolkit 当前第二代GUI开发库为Swing,具有更加完善的控件支持. Component与Container是AWT中最重要的两个类,其中Component是所有控件类的父类,而Container是Window.Frame.Panel等容器类的父类. 布局坐标系,水平方向为x轴,竖直方向为y轴. 布局管理器,当需要绘制控件时,由该管理器提供坐标. Java中共有5种:FlowLayout.GridLayout.BorderLayout.

4.JAVA之GUI编程事件监听机制

事件监听机制的特点: 1.事件源 2.事件 3.监听器 4.事件处理 事件源:就是awt包或者swing包中的那些图形用户界面组件.(如:按钮) 事件:每一个事件源都有自己特点有的对应事件和共性事件.(如:鼠标单击事件) 监听器:将可以触发某一事件的动作(不止一个动作)都已经封装到了监听器中. 以上三者,在java中都已经定义好了,直接获取其对象来用就可以了. 我们要做的事情是,就是对产生的动作进行处理. 图解事件监听机制: 4.JAVA之GUI编程事件监听机制,布布扣,bubuko.com

3.JAVA之GUI编程Frame窗口

Frame 是带有标题和边框的顶层窗口. 创建图形化界面思路: 1.创建frame窗体: 2.对窗体进行基本设置: 比如大小.位置.布局 3.定义组件: 4.将组件通过add方法添加到窗体中: 5.让窗体显示,通过setVisible(ture). ****************************** 新建一个class类,名称为:studyframe 功能实现如下几点: 1.建立一个窗口: 2.窗口有标题: 3.窗口大小设置: 4.窗口位置设置: 5.窗口可见. 代码如下: impor

8.JAVA之GUI编程键盘码查询器

程序使用说明: 1.本程序由于是java代码编写,所以运行需安装jdk并配置好环境变量. 2. 复制java代码到记事本内,另存为Keyboard_events.java: 3.复制批处理代码到记事本内,另存为运行.bat. 4.双击运行.bat批处理即可执行,当前窗体必须为软件界面才能查询. 批处理代码: @echo off javac Keyboard_events.java java Keyboard_events @pause del *.class Java代码: import jav

2.JAVA之GUI编程布局

布局管理器 容器中的组件排放方式,就是布局 常见的布局管理器: **************************************************** 1.FlowLayout(流式布局管理器,构造方法可指定对齐方式.水平垂直间距) 特点:从左到右的顺序排列,默认居中. 如图所示: ****************************************************       2.Borderlayout(边界布局管理器)