教你用Java GUI实现文本文件的读写

教你用Java GUI实现文本文件的读写

如果你想在Java图形用户界面(GUI)中实现文本文件的读写,可以按照以下步骤操作:

1. 创建GUI界面

首先,需要创建一个GUI界面,让用户可以输入和查看文件的内容。可以使用Swing或JavaFX等GUI框架来创建GUI界面。

以下是一个简单的使用JavaFX创建GUI界面的示例代码:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class TextEditor extends Application {

    private TextArea textArea;

    @Override
    public void start(Stage primaryStage) {

        // 创建主面板
        BorderPane root = new BorderPane();

        // 创建文本区域
        textArea = new TextArea();
        root.setCenter(textArea);

        // 创建场景
        Scene scene = new Scene(root, 400, 400);

        // 显示场景
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

在这个示例中,我们使用JavaFX的TextArea类创建了一个文本区域,并把它放到了主面板中。要查看和编辑文本文件的内容,只需要在文本区域中输入或粘贴文本即可。

2. 实现文本文件读写

接下来,需要实现读取和写入文本文件的功能。可以使用Java的输入输出流来操作文件。

以下是一个简单的使用Java输入输出流实现文本文件读写的示例代码:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.scene.layout.BorderPane;
import javafx.stage.FileChooser;
import javafx.stage.Stage;

public class TextEditor extends Application {

    private TextArea textArea;

    @Override
    public void start(Stage primaryStage) {

        // 创建主面板
        BorderPane root = new BorderPane();

        // 创建文本区域
        textArea = new TextArea();
        root.setCenter(textArea);

        // 添加菜单
        MenuBar menuBar = new MenuBar();
        Menu menuFile = new Menu("文件");
        MenuItem menuItemOpen = new MenuItem("打开");
        menuItemOpen.setOnAction(event -> openFile());
        menuFile.getItems().add(menuItemOpen);
        MenuItem menuItemSave = new MenuItem("保存");
        menuItemSave.setOnAction(event -> saveFile());
        menuFile.getItems().add(menuItemSave);
        menuBar.getMenus().add(menuFile);
        root.setTop(menuBar);

        // 创建场景
        Scene scene = new Scene(root, 400, 400);

        // 显示场景
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    private void openFile() {
        FileChooser fileChooser = new FileChooser();
        File file = fileChooser.showOpenDialog(textArea.getScene().getWindow());
        if (file != null) {
            try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
                String line;
                while ((line = reader.readLine()) != null) {
                    textArea.appendText(line + "\n");
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }

    private void saveFile() {
        FileChooser fileChooser = new FileChooser();
        File file = fileChooser.showSaveDialog(textArea.getScene().getWindow());
        if (file != null) {
            try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
                writer.write(textArea.getText());
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}

在这个示例中,我们添加了一个菜单项“打开”和“保存”,当用户点击菜单项时,程序会弹出文件选择器让用户选择文件。当用户选择文件后,使用Java输入输出流读取或写入文件。例如,在打开文件时,我们使用BufferedReader来逐行读取文件内容,然后把它们追加到文本区域中;在保存文件时,我们使用BufferedWriter把文本区域中的所有文本写入到文件中。

3. 示例

下面是两个示例程序,分别可以打开和保存文本文件。在这里,假设你的编译器默认的编码是UTF-8,你保存的文本文件也是使用UTF-8编码的。

示例1:打开文本文件

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class OpenTextFile {

    public static void main(String[] args) {

        // 创建文本区域
        JTextArea textArea = new JTextArea();

        // 创建滚动面板,并把文本区域添加到面板
        JScrollPane scrollPane = new JScrollPane(textArea);

        // 创建窗口,并把滚动面板添加到窗口上
        JFrame frame = new JFrame("打开文本文件");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(scrollPane);
        frame.setSize(400, 400);
        frame.setVisible(true);

        // 弹出文件选择器
        JFileChooser fileChooser = new JFileChooser();
        int result = fileChooser.showOpenDialog(frame);
        if (result == JFileChooser.APPROVE_OPTION) {
            File file = fileChooser.getSelectedFile();
            // 读取文件内容
            try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
                String line;
                while ((line = reader.readLine()) != null) {
                    textArea.append(line + "\n");
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        } else {
            System.exit(0);
        }
    }
}

在这个示例中,我们使用Swing创建了一个窗口和一个文本区域,并在窗口上放置了滚动面板,当用户打开的文件时,程序会弹出文件选择器,用户选择文件后,使用Java输入输出流读取文件内容,并把它们追加到文本区域中。

示例2:保存文本文件

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class SaveTextFile {

    public static void main(String[] args) {

        // 创建文本区域
        JTextArea textArea = new JTextArea();

        // 创建滚动面板,并把文本区域添加到面板
        JScrollPane scrollPane = new JScrollPane(textArea);

        // 创建窗口,并把滚动面板添加到窗口上
        JFrame frame = new JFrame("保存文本文件");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(scrollPane);
        frame.setSize(400, 400);
        frame.setVisible(true);

        // 弹出文件选择器
        JFileChooser fileChooser = new JFileChooser();
        int result = fileChooser.showSaveDialog(frame);
        if (result == JFileChooser.APPROVE_OPTION) {
            File file = fileChooser.getSelectedFile();
            // 将文本区域中的内容写入文件
            try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
                writer.write(textArea.getText());
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        } else {
            System.exit(0);
        }
    }
}

在这个示例中,我们使用Swing创建了一个窗口和一个文本区域,并在窗口上放置了滚动面板,当用户保存文件时,程序会弹出文件选择器,用户选择文件后,使用Java输入输出流把文本区域中的内容写入到文件中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:教你用Java GUI实现文本文件的读写 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 常见的Java类加载器有哪些?

    我来为你详细讲解一下Java类加载器。 Java类加载器 在Java中,类加载器是用于加载Java类和资源的特殊Java类。Java虚拟机通过它们来动态地加载Java类。Java类加载器是Java技术的核心组成部分,因为它使 Java 的动态实现成为可能。 Java 类加载器是类 Java.lang.ClassLoader 的实例,它负责将类的字节码从文件系…

    Java 2023年5月11日
    00
  • springboot整合JPA过程解析

    下面是对“springboot整合JPA过程解析”的完整攻略。 一、JPA介绍 JPA是Java Persistence API的缩写,是JavaEE环境下的持久化框架。它的目标是提供一种简单、统一的持久化方式,使得开发人员不需要过多关注数据访问细节,只需要关注业务逻辑的实现。 二、Spring Boot整合JPA 创建Maven项目并添加Spring Bo…

    Java 2023年6月1日
    00
  • 深入理解Java8新特性之新日期时间API的应用

    深入理解Java8新特性之新日期时间API的应用 简介 Java 8中新增加了新的日期时间API,该API提供了比老版本更多更好的特性,比如Date类容易被误用的缺陷在新API中得到很好的改进。本文将会深入讲解Java 8日期时间API,包括以下部分: 日期时间API的概览 LocalDate的使用 LocalTime的使用 LocalDateTime的使用…

    Java 2023年5月20日
    00
  • jsp测试函数的运行速度方法

    当我们需要测试一个JSP函数的运行速度时,一种简单有效的方法是使用Java的System.currentTimeMillis()方法,通过计算函数的开始和结束时间来统计函数的执行时间。 下面是实现方法的步骤: 第一步:定义方法 首先,我们需要为即将进行测试的函数添加一个计时器,以便在函数执行开始和结束时记录时间。可以添加一个名为“currentTime”的变…

    Java 2023年6月15日
    00
  • Kafka源码系列教程之删除topic

    Kafka源码系列教程之删除topic 删除Kafka中的topic需要以下步骤: 关闭topic的所有消费者 停止所有的producer,确保没有新的消息被发布到该topic 从zookeeper中删除topic目录 从broker集群中删除该topic的所有分区 示例 1 假设我们要删除名为foo的topic。首先,我们需要查看哪些消费者正在订阅该top…

    Java 2023年5月20日
    00
  • jsp内置对象

    一、什么是jsp内置对象 JSP(JavaServer Pages)内置对象是指在JSP页面中可以直接使用的特定对象,它们被JSP容器创建和初始化,用于向开发人员提供对其环境的访问。JSP内置对象是Java语言的一个重要的保留成分,通过使用内置对象可以简化JSP开发过程,同时也能够提高程序的运行效率。 二、jsp内置对象的分类 JSP内置对象分为9种,具体如…

    Java 2023年6月15日
    00
  • 关于Hibernate的一些学习心得总结

    关于Hibernate的一些学习心得总结 什么是Hibernate Hibernate是一个开源的Java持久化框架,它实现了Java Persistence API (JPA) 规范。Hibernate旨在帮助开发者通过面向对象的方式操作数据库,将对象映射到数据库表中,从而实现Java对象和数据库之间的映射关系。 Hibernate的优势 易于使用。Hib…

    Java 2023年5月19日
    00
  • Struts2 使用OGNL遍历map方法详解

    Struts2 中遍历 Map 对象 首先,我们需要在 Struts2 的 jsp 页面中通过<s:iterator>标签来遍历 Map 类型的对象。这个标签包含了一个 value 属性,用于读取 map 中的值,具体如下: <s:iterator value="myMap"> Key: <s:propert…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部