首页 > 编程语言 >Java实验-Swing 文件处理

Java实验-Swing 文件处理

时间:2023-03-02 13:35:36浏览次数:41  
标签:java Swing window JButton Java 实验 new import public

实验要求:

  1. 点击read按钮,则读入指定txt文档中的内容,显示在第一个文本域(左边文本域中)。

2.点击sort按钮,则将文本域中特点的字符提取出来,放到右边的文本域中。

3.点击save按钮,则将处理过后右边的文本保存到一个新的txt文档中。

请用Java图形界面的知识,编写以上软件。

代码:

-- 按键处理类ButtonHandler:

package com.junlin.exer8;

import com.junlin.exer8.MyFrame;

import javax.swing.JButton;
import javax.swing.JFrame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
 * @Description:
 * @author: junlin623
 * @create: 2022-11-11 21:34
 */
class ButtonHandler implements ActionListener {
    private MyFrame window;  //表示处理的是哪个窗口中的点击事件

    public ButtonHandler(JFrame window) {
        this.window = (MyFrame) window;
    }


    @Override
    public void actionPerformed(ActionEvent e) {
        //表示点击的按钮是哪一个
        JButton sourceBtn = (JButton)e.getSource();
        FileReader fr = null;
        if(sourceBtn == this.window.readBtn) {  //读
            try {
                fr = new FileReader("./resources/" + this.window.filename);
                char[] buffer = new char[10];
                int len = 0;
                while((len = fr.read(buffer)) != -1) {
                    String s = new String(buffer, 0, len);
                    this.window.leftArea.append(s);
                }
            } catch (Exception ex) {
                throw new RuntimeException(ex);
            }finally {
                try {
                    fr.close();
                } catch (IOException ex) {
                    throw new RuntimeException(ex);
                }
            }

        }else if(sourceBtn == this.window.sortBtn) {   //提取
            String str = this.window.leftArea.getText();
            String[] words = str.split("\n");
            for(String s: words) {
                if(s.contains("DBa") || s.contains("RRi")) {
                    this.window.rightArea.append(s + "\n");
                }
            }
        }else if(sourceBtn == this.window.saveBtn) {   //保存
            String str = this.window.rightArea.getText();
            FileWriter fw = null;
            try {
                fw = new FileWriter("./resources/result.txt");
                fw.write(str);
            } catch (Exception ex) {
                throw new RuntimeException(ex);
            }
        }

    }
}

-- 界面类MyFrame

package com.junlin.exer8;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * @Description:
 * @author: junlin623
 * @create: 2022-11-11 21:10
 */
public class MyFrame extends JFrame {
    public JButton readBtn;  //读按钮
    public JButton sortBtn;  //提取按钮
    public JButton saveBtn;  //保存按钮
    public JTextArea leftArea;   //左侧文本区域
    public JTextArea rightArea;   //右侧文本区域
    public String filename = "data.txt";   //要读取的文件名
    public MyFrame() {
        super("文件处理");
        this.setLayout(new FlowLayout());
        //左侧区域
        readBtn = new JButton("read");
        this.add(readBtn);

        JScrollPane leftPane = new JScrollPane();
        leftPane.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS );
        leftArea = new JTextArea(30,30);  //这里必须指定行数和列数才可以显示滚动条, 而且不能使用下面这样代码
        //leftArea.setPreferredSize(new Dimension(300, 500));
        leftArea.setLineWrap(true);
        leftPane.setViewportView(leftArea);
        this.add(leftPane);

        sortBtn = new JButton("sort");
        this.add(sortBtn);

        //右侧区域
        JScrollPane rightPane = new JScrollPane();
        rightPane.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS );
        rightArea = new JTextArea(30,30);
        rightArea.setLineWrap(true);
        rightPane.setViewportView(rightArea);
        this.add(rightPane);

        saveBtn = new JButton("save");
        this.add(saveBtn);
        //添加点击事件
        readBtn.addActionListener(new ButtonHandler(this));
        sortBtn.addActionListener(new ButtonHandler(this));
        saveBtn.addActionListener(new ButtonHandler(this));
        this.setSize(1000, 700);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

--主类:

package com.junlin.exer8;

/**
 * @Description:
 * @author: junlin623
 * @create: 2022-11-11 21:10
 */
public class JavaMain {
    public static void main(String[] args) {
        new MyFrame();
    }
}

运行结果:

标签:java,Swing,window,JButton,Java,实验,new,import,public
From: https://www.cnblogs.com/junlin623/p/17171472.html

相关文章

  • Java实验-Swing 简单多线程实验
    实验要求:多线程是生活中常见的现象,我们要让计算机程序同时做N件事,就可以通过多线程实现:如图所示,分别用Thread和Runnable两种方法各开2条线程,实现如下界面,每条线程的数字......
  • Java实验-Swing 色子游戏
    一、实验要求:、筛子游戏是一个具有趣味性的小游戏,它的实现原理是绘制图形,加载图片,通过鼠标事件点击按钮,晃动色子采用的是定时器,每隔200毫秒切换一次色子的图片实现:请......
  • Java实验-Swing 计算器
    实验要求:计算器软件是非常实用的工具请用Java图形界面的知识,编写以上软件。仅用JButton、JTextField两个组件和JFrame窗口实现。实现基本的加减乘除运算。代码:Gr......
  • Java实验-Swing 扑克牌游戏
    实验要求:扑克牌游戏是非常具有趣味性游戏,如下图所示,建立一个窗口界面,用JLable和相关组件(比如适当增加按钮,文本域等,可以自由发挥)实现以下界面,要求:点击任何一张牌,能控制......
  • Java实验-Swing 涂鸦板
    实验要求:涂鸦板是一个具有趣味性的小程序,它的实现原理是通过鼠标事件,控制鼠标移动结合画图功能实现。鼠标拖拽才开始绘制,松开鼠标则停止绘制。代码:--MyPaint画板类:pac......
  • java调用WCF服务
    一、概述最近项目上有需要和建科机器进行通信的需求,而建科这边给的技术文档和服务都是webservice的,我这边要做的就是用Java和建科的webservice交互。启动建科的webservice......
  • 【JavaScript】33_递归
    17、递归递归调用自身的函数称为递归函数递归的作用和循环是基本一直递归的核心思想就是将一个大的问题拆分为一个一个小的问题,小的问题解决了,大的问题也就解决了编写递归函......
  • mac系统上hdfs java api的简单使用
    1、背景在上一节中,我们简单学习了在命令行上如何操作hdfsshellapi,此处我们通过java程序来操作一下。2、环境准备需要在本地环境变量中配置HADOOP_HOME或在程序启动......
  • mac系统上hdfs java api的简单使用
    目录1、背景2、环境准备3、环境搭建3.1引入jar包3.2引入log4j.properties配置文件3.3初始化HadoopApi4、javaapi操作4.1创建目录4.2上传文件4.3列出目录下有哪些文......
  • Java读取文件的几种方式
    1.使用流读取文件publicstaticvoidstream(){StringfileName="D:\\test.txt";finalStringCHARSET_NAME="UTF-8";List<String>content=new......