Java Swing实现简易版项目代码统计

尝试用AI生成日常方便使用的代码程序

用文心一言生成的可用代码

(1)提示1

假如你是一个java程序员,请用java swing创建一个JFrame,显示一个JTextField显示路径,Jtextfield右侧添加一个JButton,下面添加一个JTextArea,点击JButton后新建一个线程,执行耗时操作,完成工作后,在住线程显示,显示到一个JTextArea上面

(2)提示2

接着刚才这个问题,如果在SwingWorker耗时操作的过程中,显示一下进度,该如何实现呢,在JFrame的下面再增加一个进度条组件,耗时操作的过程中实时更新进度到进度条上面

(3)提示3

现在有一个新需求,如果要在一个磁盘分区中递归遍历文件,然后将每一个遍历的文件路径显示到JFrame的一个JLabel中,或者用其他组件显示路径也可以,遍历时间非常久,这种情况能用SwingWorker实现吗?中途如何显示遍历到的文件路径呢

使用AI助手生成简单的项目代码统计程序

在这里插入图片描述

简易版本的统计项目代码行数,统计结果显示到TextArea中

package learn;import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.List;/*** 简易版本的统计项目代码行数,统计结果显示到TextArea中*/
public class SwingExampleWithProgress2 {private JFrame frame;private JTextField pathField;private JButton button;private JTextArea textArea;private JProgressBar progressBar;String path = "/home/xxx/github/WarCraft/src";int totalLineCount = 0;public SwingExampleWithProgress2() {prepareGUI();}public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {public void run() {new SwingExampleWithProgress2();}});}private void prepareGUI() {frame = new JFrame("Swing Example with Progress");frame.setSize(450, 400);frame.setLayout(new BorderLayout());frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JPanel panel = new JPanel(new BorderLayout());pathField = new JTextField(20);pathField.setText("Enter a path here:");pathField.setText(path);button = new JButton("Perform Task");button.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {SwingWorker<Void, String> worker = new SwingWorker<Void, String>() {@Overrideprotected Void doInBackground() throws Exception {File directory = new File(path); // 替换为你的目录路径try {Files.walkFileTree(Paths.get(directory.getPath()), new SimpleFileVisitor<Path>() {@Overridepublic FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {if (file.toString().endsWith(".kt")) {int lines = countLines(file);String s = file.toString() + " lines:" + lines;System.out.println(s);publish(s);totalLineCount += lines;} else if (file.toString().endsWith(".java")) {int lines = countLines(file);String s = file.toString() + " lines:" + lines;System.out.println(s);publish(s);totalLineCount += lines;}return FileVisitResult.CONTINUE;}@Overridepublic FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {return FileVisitResult.CONTINUE;}});} catch (IOException e) {e.printStackTrace();}String s = "Total line count: " + totalLineCount;System.out.println(s);publish(s);return null;}@Overrideprotected void process(List<String> chunks) {super.process(chunks);for (String progress : chunks) {textArea.append(progress + "\n");}}@Overrideprotected void done() {textArea.append("Task Completed!\n");}};worker.execute();}});progressBar = new JProgressBar(0, 100);progressBar.setStringPainted(true); // 显示进度条上的文字panel.add(pathField, BorderLayout.CENTER);panel.add(button, BorderLayout.EAST);textArea = new JTextArea(10, 30);textArea.setEditable(false);JScrollPane scrollPane = new JScrollPane(textArea);frame.add(panel, BorderLayout.NORTH);frame.add(scrollPane, BorderLayout.CENTER);frame.add(progressBar, BorderLayout.SOUTH); // 将进度条添加到框架的底部frame.setVisible(true);}private List<String> visitFile(String rootPath) {List<String> list = new ArrayList<>();File directory = new File(rootPath); // 替换为你的目录路径try {Files.walkFileTree(Paths.get(directory.getPath()), new SimpleFileVisitor<Path>() {@Overridepublic FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {if (file.toString().endsWith(".kt")) {int lines = countLines(file);String s = file.toString() + " lines:" + lines;System.out.println(s);list.add(s);totalLineCount += lines;} else if (file.toString().endsWith(".java")) {int lines = countLines(file);String s = file.toString() + " lines:" + lines;System.out.println(s);list.add(s);totalLineCount += lines;}return FileVisitResult.CONTINUE;}@Overridepublic FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {return FileVisitResult.CONTINUE;}});} catch (IOException e) {e.printStackTrace();}String s = "Total line count: " + totalLineCount;System.out.println(s);list.add(s);return list;}private int countLines(Path file) throws IOException {return (int) Files.lines(file).count();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/673175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文档协作技术——Operational Transformations简单了解

OT是支持协作软件系统的一种广泛使用的技术。 OT通常使用副本文档储存&#xff0c;每个客户端都拥有对文档的副本。客户端在本地副本以无锁非堵塞方式操作&#xff0c;并将改变传递到其他客户端。当客户端收到其他客户端传播的改变之后&#xff0c;通过转换应用更改&#xff0…

【前端web入门第四天】03 显示模式+综合案例热词与banner效果

文章目录: 1. 显示模式 1.1 块级元素,行内元素,行内块元素 1.2 转换显示模式 综合案例 综合案例一 热词综合案例二 banner效果 1. 显示模式 什么是显示模式 标签(元素)的显示方式 标签的作用是什么? 布局网页的时候&#xff0c;根据标签的显示模式选择合适的标签摆放内容。…

揭秘备忘录模式:打造灵活高效的状态管理解决方案

备忘录模式&#xff08;Memento Pattern&#xff09;是一种行为设计模式&#xff0c;它允许在不暴露对象内部状态的情况下捕获和恢复对象的内部状态。这种模式主要用于实现撤销操作。 在 Java 中&#xff0c;备忘录模式通常包括以下三个角色&#xff1a; 发起人&#xff08;O…

leetcode 1539.第k个缺失的正整数

这个题作者就当作是练习C的STL容器来做的&#xff0c;也就是暴力硬解吧。 思路&#xff1a;按照数据范围&#xff0c;我们再创造一个全集&#xff0c;利用差集的概念来求出来arr所没有的元素&#xff0c;放到结果数组里面&#xff0c;然后再对位置进行筛选。 注意&#xff1a…

vue3:25—其他API

目录 1、shallowRef和shallowReactive 2、readonly与shallowReadonly readonly shallowReadonly 3、toRaw和markRaw toRaw markRaw 4、customRef 1、shallowRef和shallowReactive shallowRef 1.作用:创建一个响应式数据&#xff0c;但只对顶层属性进行响应式处理。2…

代码随想录算法训练营第13天—二叉树02 | ● *层序遍历(对应10道题) ● *226.翻转二叉树 ● 101.对称二叉树

*层序遍历&#xff08;二叉树的广度优先搜索&#xff0c;对应10道题&#xff09; 102.二叉树的层序遍历(opens new window) 107.二叉树的层次遍历II(opens new window) 199.二叉树的右视图(opens new window) 637.二叉树的层平均值(opens new window)斜体样式 429.N叉树的层序…

Windows 安装 MySQL 最新最简教程

Windows 安装 MySQL 最新最简教程 官网地址 https://dev.mysql.com/downloads/mysql/下载 MySQL zip 文件 配置 MySQL1、解压文件 2、进入 bin 目录 搜索栏输入 cmd 回车进入命令行 C:\Users\zhong\Desktop\MySQL\mysql-8.3.0-winx64\mysql-8.3.0-winx64\bin 注意这里是你自己…

JUnit实践教程——Java的单元测试框架

前言 大家好&#xff0c;我是chowley&#xff0c;最近在学单元测试框架——JUnit&#xff0c;写个博客记录一下&#xff01; 在软件开发中&#xff0c;单元测试是确保代码质量和稳定性的重要手段之一。JUnit作为Java领域最流行的单元测试框架&#xff0c;为开发人员提供了简单…

std::vector<cv::Mat>和unsigned char** in_pixels 互相转换

将std::vectorcv::Mat转换为unsigned char** in_pixels&#xff0c; std::vector<cv::Mat> matVector; // 假设已经有一个包含cv::Mat的vector// 创建一个二维数组&#xff0c;用于存储像素数据 unsigned char** in_pixels new unsigned char*[matVector.size()]; for …

(2)(2.14) SPL Satellite Telemetry

文章目录 前言 1 本地 Wi-Fi&#xff08;费用&#xff1a;30 美元以上&#xff0c;范围&#xff1a;室内&#xff09; 2 蜂窝电话&#xff08;费用&#xff1a;100 美元以上&#xff0c;范围&#xff1a;蜂窝电话覆盖区域&#xff09; 3 手机卫星&#xff08;费用&#xff…

JS - 处理元素滚动

业务功能中时常有元素滚动的功能&#xff0c;现在就总结一下一些常用的事件。 一、定位滚动元素 做一切滚动操作之前都应该先定位到滚动元素&#xff0c;再做其他操作&#xff0c;如滚动顶部&#xff0c;获取滚动距离、禁止滚动等。 把以下代码复制粘贴到浏览器 Console 面板…

IT行业顶级证书:助力职业生涯的制胜法宝

IT行业顶级证书&#xff1a;助力职业生涯的制胜法宝 在IT行业&#xff0c;拥有一系列高含金量的证书是事关职业生涯发展的关键。这些证书不仅是技能的象征&#xff0c;更是在激烈的市场竞争中脱颖而出的法宝。让我们一起揭晓在中国IT行业中&#xff0c;哪些证书是最具含金量的…

仰暮计划|“​爷爷说这些话的时候眼睛都红着,他那变形的脊柱和瘸拐的双腿都证明他曾为这个家付出了血汗拼尽了全力”

赴一场拾光之旅&#xff0c;集往年回忆碎片 爷爷生于1952年&#xff0c;今年已有七十一了&#xff0c;是河南焦作沁阳北金村的一位地道农民&#xff0c;劳苦一生&#xff0c;如今终于得以颐养天年。许是早年经历过于难忘&#xff0c;爷爷如今与我讲起仍是记忆犹新&#xff0c;…

百卓Smart管理平台 uploadfile.php 文件上传漏洞【CVE-2024-0939】

百卓Smart管理平台 uploadfile.php 文件上传漏洞【CVE-2024-0939】 一、 产品简介二、 漏洞概述三、 影响范围四、 复现环境五、 漏洞复现手动复现小龙验证Goby验证 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工…

uniapp 本地存储的方式

1. uniapp 本地存储的方式 在uniapp开发中&#xff0c;本地存储是一个常见的需求。本地存储可以帮助我们在客户端保存和管理数据&#xff0c;以便在应用程序中进行持久化存储。本文将介绍uniapp中本地存储的几种方式&#xff0c;以及相关的代码示例。 1.1. 介绍 在移动应用开发…

#Js篇:字符串的使用方法es5和es6

字符串 \ &#xff1a;单引号&#xff08;\u0027&#xff09;\" &#xff1a;双引号&#xff08;\u0022&#xff09; charAt 定义&#xff1a; 返回指定位置的字符&#xff0c;参数时从0开始编号的位置 参数&#xff1a; 位置下标 abc.charAt(1) // "b" …

瑞_力扣LeetCode_二叉树相关题

文章目录 说明题目 144. 二叉树的前序遍历题解 题目 94. 二叉树的中序遍历题解 题目 145. 二叉树的后序遍历题解 题目 105. 从前序与中序遍历序列构造二叉树题解 题目 106. 从中序与后序遍历序列构造二叉树题解 &#x1f64a; 前言&#xff1a;本文章为瑞_系列专栏之《刷题》的…

【深度学习】Softmax实现手写数字识别

实训1&#xff1a;Softmax实现手写数字识别 相关知识点: numpy科学计算包&#xff0c;如向量化操作&#xff0c;广播机制等 1 任务目标 1.1 简介 本次案例中&#xff0c;你需要用python实现Softmax回归方法&#xff0c;用于MNIST手写数字数据集分类任务。你需要完成前向计算…

牛客周赛 Round 31 E.小红的子集取反【dp+设置偏移量】

原题链接&#xff1a;https://ac.nowcoder.com/acm/contest/74362/E 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld 题目描述 小红拿到了一个数组&#xff0c;她准备选择若干元素…

python将Word页面纸张方向设置为横向

通过python-docx的章节属性&#xff0c;就可以更改纸张方向、纸张尺寸。 import docx from docx.enum.section import WD_ORIENT from docx.shared import Cmdocument docx.Document() section document.sections[0]# 设置纸张大小为A4大小 section.page_width Cm(21) sect…