教你用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面试题冲刺第二十一天–JVM

    Java面试题冲刺第二十一天–JVM 一、了解JVM 1. JVM的概念 JVM(Java Virtual Machine)即Java虚拟机,是Java语言的运行环境,负责将Java字节码文件转换为机器指令执行。 2. JVM的内部结构 JVM的内部结构分为三个部分:类加载器,运行时数据区,执行引擎。 2.1 类加载器 用来加载类文件,包括如下几种类型: …

    Java 2023年5月26日
    00
  • Java如何实现字符串每隔4位加空格

    Java如何实现字符串每隔4位加空格,可以通过如下方式实现: 1.使用正则表达式 Java中可以使用正则表达式对字符串进行匹配和替换。我们可以使用正则表达式来定义每四个字符后需要加上一个空格。 具体的代码实现如下: public String addSpace(String str) { return str.replaceAll("(.{4})&…

    Java 2023年5月26日
    00
  • java实现实时通信聊天程序

    Java 实现实时通信聊天程序的完整攻略,大致分为以下几个步骤: 确定使用的通信协议:可以使用 TCP 或者 UDP 协议,如果需要考虑网络稳定性和通信质量,建议选择 TCP 协议;如果需要考虑实时性和消息传输速度,建议选择 UDP 协议。 设计程序的架构:根据不同的需求和功能,可以选择不同的架构。最常用的是客户端-服务器架构,可以使用 Java 提供的 S…

    Java 2023年5月19日
    00
  • 提升Ruby on Rails性能的几个解决方案

    当网站的流量愈发庞大之后,Ruby on Rails的性能问题可能会变得突出。在这篇文章中,我们将分享一些提升Ruby on Rails性能的解决方案。以下是一些示例: 1. 数据库优化 首先,可以考虑数据库优化。你可以执行以下一些操作: 添加索引:你可以从应用程序中查找慢速查询,并使用适当的索引进行优化。例如,在查询中使用一个where子句时,可以在相应W…

    Java 2023年6月2日
    00
  • SpringMVC+Shiro的基本使用及功能介绍

    SpringMVC+Shiro的基本使用及功能介绍 什么是Shiro Shiro是一个强大且易于使用的Java安全框架,它提供了身份验证、授权、加密、会话管理等功能,可以帮助我们快速构建安全的Web应用程序。 SpringMVC集成Shiro SpringMVC集成Shiro可以帮助我们快速构建安全的Web应用程序。以下是SpringMVC集成Shiro的基…

    Java 2023年5月17日
    00
  • spring整合JMS实现同步收发消息(基于ActiveMQ的实现)

    下面我将给您详细讲解“spring整合JMS实现同步收发消息(基于ActiveMQ的实现)”的完整攻略。 什么是JMS JMS(Java Messaging Service)是Java EE标准的消息中间件API。它提供了一种发送和接收消息的标准方法,以及处理和管理消息的机制。 什么是ActiveMQ ActiveMQ是一款常用的基于JMS的开源消息中间件,…

    Java 2023年5月20日
    00
  • SpringBoot使用@Cacheable时设置部分缓存的过期时间方式

    当应用中使用SpringBoot提供的缓存功能时,可能会遇到部分数据不需要长时间保存在缓存中的情况,需要在一定时间之后自动过期失效。这时就需要对这部分缓存设置特定的过期时间。下面是设置部分缓存的过期时间的完整攻略: 1. 添加缓存依赖 在pom.xml文件中添加SpringBoot提供的缓存依赖,例如: <dependency> <grou…

    Java 2023年5月26日
    00
  • Java中断异常的正确处理方法

    Java中断异常(Interrupted Exception)是指在程序运行过程中,通过调用Thread.interrupt()方法,向正在运行的线程发出一个中断信号,该信号可以被捕获并响应,以进行线程的安全停止或其他处理。对于Java应用程序开发者来说,合理应对线程中的中断异常是非常重要的技能。下面是Java中断异常的正确处理方法的攻略: 1. 感知中断信…

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