Java程序设计2023-第八次上机练习

news2025/1/16 14:01:20

8-1简单文本编辑器

编写简单文本编辑器,该程序可以新建、打开、编辑和保存文本文件。当用户点击New时,新建一个文件,用户可以编辑文件内容,然后点击Save保存文件。用户点击Open时,选择一个已有文件,然后可对文件进行编辑。示例输出如图所示。
注意frame.setVisible(true)要放在最后,否则textArea会显示不出来

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.OutputStreamWriter;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.filechooser.FileFilter;
class menu{
	JFrame frame;
	JPanel panel;
	JMenuBar menuBar;
	JMenu editMenu;
	JMenuItem paste1,paste2,paste3,paste4;
	JFileChooser chooser;
	JTextArea textArea;
	public menu() {
		frame=new JFrame();
		Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize( );
		int screenWidth=screenSize.width;
		int screenHeight=screenSize.height;
		int x=(screenWidth-600)/2; 
		int y=(screenHeight-400)/2;
		frame.setSize(800,600);
		frame.setLocation(x, y);//窗口居中
		frame.setTitle("FileChooserTest");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		menuBar=new JMenuBar();
		frame.setJMenuBar(menuBar);
		editMenu = new JMenu("File");
		menuBar.add(editMenu);
		paste1=new JMenuItem("New");
		paste2=new JMenuItem("Open");
		paste3=new JMenuItem("Save");
		paste4=new JMenuItem("Exit");
		editMenu.add(paste1);editMenu.add(paste2);
		editMenu.add(paste3);editMenu.add(paste4);
		
		textArea=new JTextArea("waiting for inputting...",30,40);
		JScrollPane scrollPane=new JScrollPane(textArea);
		frame.add(scrollPane);
		
		chooser=new JFileChooser();
		
		paste1.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				textArea.setText("");
			}
		});
		paste2.addActionListener(new FileOpenListener());//打开文件
		paste3.addActionListener(new FileSaveListener());
		paste4.addActionListener(new ActionListener() {//退出
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		frame.setVisible(true);
	}
	private class FileOpenListener implements ActionListener{//打开文件事件监听器
		public void actionPerformed(ActionEvent e) {
			chooser.setCurrentDirectory(new File("."));
			TextFileFilter filter= new TextFileFilter();
			chooser.setFileFilter(filter);
			chooser.showOpenDialog(null);
			String fileName=chooser.getSelectedFile().getPath();
			textArea.setText("");
			textArea.append("打开文件"+fileName+"\n");
			
			File file=chooser.getSelectedFile();
			FileReader reader=null;
			try {
				reader=new FileReader(file);
				char []buf=new char[10000];
				int len=reader.read(buf);
				textArea.append(new String(buf,0,len));
				reader.close();
				textArea.setVisible(true);
				System.out.println("successfully open");
			}catch (Exception ex) {
				ex.printStackTrace();// TODO: handle exception
			}
		}
	}
	private class FileSaveListener implements ActionListener{//存储文件事件监听器
		public void actionPerformed(ActionEvent e) {
			String filename=JOptionPane.showInputDialog("请输入存储文件名:");
			try {
				FileOutputStream out=new FileOutputStream(new File(filename));
				OutputStreamWriter writer=new OutputStreamWriter(out);
				writer.append(textArea.getText());
				writer.close();
				out.close();
			}catch(Exception ex) {
				ex.printStackTrace();
			}
		}
	}
}

class TextFileFilter extends FileFilter{//文本文件过滤器
	public String getDescription() {
		return "文本文件";
	}
	public boolean accept(File f) {
		if(f.isDirectory())return true;
		String name=f.getName().toLowerCase();
		if(name.endsWith(".java")||name.endsWith(".txt"))return true;
		return false;
	}
}
public class FileEditor {
	public static void main(String []args) {
		new menu();
	}
}

8-2风扇

编写程序,显示3个风扇,用控制按钮开动和停止风扇。可以同时开动和停止3个风扇,也可以分别开动和停止每一个风扇。

没写出来,看别人的,Java风扇
实现得略有瑕疵,没有reverse而是reset,而且没有滑动条,转得太快,屏幕刷新跟不上
在这里插入图片描述

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

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

相关文章

SDWAN(Software Defined Wide Area Network)概述与优势分析

文章目录 SDWAN简介SDWAN技术优势简化网络部署和维护安全传输灵活网络拓扑极致体验 SD-WAN关联技术STUNIPsec智能选路SaaS路径优化 典型组网多总部分支组网云管理组网 推荐阅读 SDWAN简介 SDWAN(Software Defined Wide Area Network,软件定义广域网&…

Revit 平面的圆弧,空间的椭圆弧

大家对Revit的空间曲线那么理解,如何用代码创建空间的椭圆弧,,上看是圆弧,正面看是椭圆? 直接放代码: Document doc = commandData.Application.ActiveUIDocument.Document; Autodesk.Revit.DB.XYZ center = new Autodesk.Revit.DB.XYZ(0, 0, 0); …

Vue3 源码解读系列(三)——组件渲染

组件渲染 vnode 本质是用来描述 DOM 的 JavaScript 对象,它在 Vue 中可以描述不同类型的节点,比如:普通元素节点、组件节点等。 vnode 的优点: 抽象:引入 vnode,可以把渲染过程抽象化,从而使得组…

漏刻有时百度地图API实战开发(4)显示指定区域在移动端异常的解决方案

漏刻有时百度地图API实战开发(1)华为手机无法使用addEventListener click 的兼容解决方案漏刻有时百度地图API实战开发(2)文本标签显示和隐藏的切换开关漏刻有时百度地图API实战开发(3)自动获取地图多边形中心点坐标漏刻有时百度地图API实战开发(4)显示指定区域在移动端异常的解…

Linux文件系统——重定向

文章目录 1. 文件描述符分配规则2. 重定向接口dup2自定义shell重定向(补充) 3. 标准输出和标准错误4. 如何理解一切接文件 本章代码gitee地址:文件重定向 1. 文件描述符分配规则 文件描述符的分配规则是从0下标开始,寻址最小的没有使用的数组位置&#…

飞机社交软件开发:重新定义社交媒体的空中交互体验

【导语】 随着互联网技术的快速发展,社交媒体平台的界限也逐渐模糊。飞机社交软件应运而生,打破传统的地面社交模式,为空中旅行的旅客提供全新的交流平台。本文将从市场需求、技术实现、用户体验和未来发展等方面,深入探讨飞机社交…

探索内存函数的奥秘【memcpy、memmove、memset、memcmp】

目录 一,memcpy函数 1,memcpy函数简介 2,memcpy函数的原理 3,memcpy函数的用法 4,注意事项 5,memcpy函数模拟实现 二,memmove函数 1,memmove函数简介 2,memmove函…

文件夹批量改名技巧:简单步骤,实现文件夹随机重命名

在日常生活和工作中,经常需要处理大量的文件夹,需要对其进行有效的管理。在这些情况下,文件夹的命名就变得非常重要。一个好的命名策略可以快速找到所需的文件夹,也可以帮助更好地组织文件。然而,手动为每个文件夹重命…

Ocelot:.NET开源API网关提供路由管理、服务发现、鉴权限流等功能

随着微服务的兴起,API网关越来越常见。API网关是连接应用程序和用户之间的桥梁,就像一个交通指挥员,负责处理所有进出应用的数据和请求,确保安全、高效、有序地流通。 今天给大家推荐一个.NET开源API网关。 01 项目简介 Ocelot…

通过easyexcel导出数据到表格

这篇文章简单介绍一下怎么通过easyexcel做数据的导出,使用之前easyui构建的歌曲列表crud应用,添加一个导出按钮,点击的时候直接连接后端接口地址,在后端的接口完成数据的导出功能。 前端页面完整代码 let editingId; let request…

智链引擎CEO李智:游戏化增长中台,让裂变营销快十倍、便宜十倍、好十倍丨数据猿专访...

大数据产业创新服务媒体 ——聚焦数据 改变商业 双十一电商大战一触即发,各个垂类的App也都希望能够借力双十一营销季,实现用户和营收双增长。MarTech在这个风口上,又成为2B赛道关注的焦点。 业内人士指出,MarTech的引入催生营销…

毅速丨金属3D打印零件品质受哪些因素影响

金属3D打印的零件品质受到多个因素的影响,包括设备、材料、工艺、后处理等。不同厂商的品质差别大致由以下几个方面造成。 一、设备性能差异: 不同厂商的金属3D打印设备可能存在性能上的差异,包括激光功率、扫描速度、打印精度、稳定性等。这…

【教3妹学编程-算法题】765. 情侣牵手

3妹:2哥2哥,你看到新闻了吗?襄阳健桥医院院长 公然“贩卖出生证明”, 真是太胆大包天了吧。 2哥 : 我也看到新闻了,7人被采取刑事强制措施。 就应该好好查查他们, 一查到底! 3妹:真的…

Python:词法分析(行结构与显式、隐式行拼接)

相关阅读 Pythonhttps://blog.csdn.net/weixin_45791458/category_12403403.html?spm1001.2014.3001.5482 1、逻辑结构 一个Python程序由许多逻辑行组成,字面意义上的一行指的是末尾有换行符(\n),但在不同的情况下,行末尾的换行符(\n)可能有…

如何选择一个可靠的爬虫代理服务商?技术人员都需要知道

我身边从事大数据相关行业的朋友最近告诉我,自己新招的小伙伴工作效率很低,很多最基础的工具都不会选择,经常因为代理IP不可靠导致工作出错。 听完这些我才意识到,在这个大数据时代,还是有很多新手在进行网络爬取任务…

Elasticsearch 和 Go 中使用向量搜索寻找地鼠

作者:CARLY RICHMOND,LAURENT SAINT-FLIX 就像动物和编程语言一样,搜索也经历了不同实践的演变,很难在其中做出选择。 加入我们的第二部分,通过 Elasticsearch 中的矢量搜索在 Go 中狩猎地鼠(gophers&…

沁恒微WCH592程序烧录问题

在使用wch592蓝牙芯片时,使用WCHISPStudio_V3.60工具烧录hex固件时,识别设备OK, 擦除flash OK,就是在烧录时一直报错,错误如下: 原因是:代码和数据保护模式没有启用。 改为如下:

Git可视化界面的操作,SSH协议的以及IDEA集成Git

目录 一. Git可视化界面的操作 二. gitee的ssh key 2.1 SSH协议 2.2 ssh key 三. IDEA集成Git 3.1 分享项目 3.2 下载项目 一. Git可视化界面的操作 上一篇博客只用到了git的命令窗口,现在就来看看可视化窗口要怎么操作。 点击Git GUI Here GUI界面 在g…

由于找不到 d3dx9_43.dll,无法继续执行代码。重新安装程序可能会解决此问题

电脑出现d3dx9_43.dll缺失的问题,通常是由于DirectX组件未安装或损坏导致的。为了解决这个问题,我为您提供了以下四个解决方法: d3dx9_43.dll解决方法1. 使用dll修复程序修复 首先,使用系统文件程序dll进行修复操作非常简单&…

ZYNQ_project:IP_ram_pll_test

例化MMCM ip核,产生100Mhz,100Mhz并相位偏移180,50Mhz,25Mhz的时钟信号。 例化单口ram,并编写读写控制器,实现32个数据的写入与读出。 模块框图: 代码: module ip_top(input …