swing快速入门(二十五)

注释很详细,直接上代码

新增内容

1.ImageIO.write读取并显示图片

2.ImageIO.writeImageIO.write读取并保存图片

package swing21_30;import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;public class swing_test_23 {private Frame frame=new Frame("swing_test_23");MenuBar menuBar=new MenuBar();Menu menu=new Menu("文件");MenuItem open=new MenuItem("打开");MenuItem save=new MenuItem("另存为");//声明BufferedImage对象,记录本地图片BufferedImage image;private class MyCanvas extends Canvas{@Overridepublic void paint(Graphics g){g.drawImage(image,0,0,null);}}MyCanvas drawArea=new MyCanvas();public void init() throws Exception{//组装视图open.addActionListener(e -> {//打开文件FileDialog fileDialog=new FileDialog(frame,"打开图片",FileDialog.LOAD);fileDialog.setVisible(true);//获取用户选择的图片路径以及名称String dir=fileDialog.getDirectory();String filename=fileDialog.getFile();try{image= ImageIO.read(new File(dir+filename));drawArea.repaint();} catch (IOException ex) {throw new RuntimeException(ex);}});save.addActionListener(e->{//展示一个文件对话框FileDialog fileDialog=new FileDialog(frame,"保存图片",FileDialog.SAVE);fileDialog.setVisible(true);//获取用户设置的保存路径和文件名称String dir=fileDialog.getDirectory();String filename=fileDialog.getFile();try{ImageIO.write(image,"JPEG",new File(dir,filename));}catch (IOException ex){ex.printStackTrace();}});// 设置窗口大小frame.setBounds(200,200,740,508);// 显示窗口frame.setVisible(true);// 关闭窗口时退出程序frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});// 菜单栏menu.add(open);menu.add(save);menuBar.add(menu);//把菜单条目添加到菜单栏中frame.setMenuBar(menuBar);frame.add(drawArea);//把画布添加到窗口中frame.setBounds(200,200,740,508);frame.setVisible(true);}public static void main(String[] args) {//直接运行inittry {new swing_test_23().init();} catch (Exception e) {throw new RuntimeException(e);}}
}

运行效果

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

【.NET Core】反射(Reflection)详解(二)

【.NET Core】反射(Reflection)详解(二) 文章目录 【.NET Core】反射(Reflection)详解(二)一、概述二、Type类2.1 Type对象表示哪些类型2.2 获取Type及其关联对象类型的方式2.3 Type…

复习linux——PAM认证机制

PAM只关注如何为服务验证用户的API,通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开 PAM提供了对所有服务进行认证的中央机制,适用于本地登陆,远程登陆,系统管理员通过PAM配置文件来定…

使用web_video_server进行网页段的视频传输

引言:在项目中,需要实现无人机摄像头采集到的图像回传到window下进行查看,为此,选择使用web_video_server功能包实现局域网下的图像传输 硬件环境: 硬件:Jetson orin nano 8G D435摄像头 环境&#xff…

电子病历编辑器源码,提供电子病历在线制作、管理和使用的一体化电子病历解决方案

概述: 电子病历是指医务人员在医疗活动过程中,使用医疗机构信息系统生成的文字、符号、图表、图形、数据、影像等数字化信息,并能实现存储、管理、传输和重现的医疗记录,是病历的一种记录形式。 医院通过电子病历以电子化方式记录患者就诊的信息,包括&…

2024年pmp考试还有多久啊?怎么备考?

一般来说每年3、6、9、12月考试,一年四次,具体时间以官网通知为准。报考时间提前2个月报名,2023年的最后一次考试时间是11月,已经截止报名了。所以下一次考试就得等到2024年3月了。 想知道怎么备考先来分析一下现在的“新”考纲&…

npm error code EINTEGRITY 问题的解决方法之一

我在使用 npm install -g gatsby-cli 命令安装 Gatsby 时遇到了 “npm error code EINTEGRITY ” 这个问题。试了一些方法,最后按提示信息找 npm-cache 目录的位置将其删除,解决了问题,在这期间还升级 npm 到了最新的稳定版(不知道…

【重点】【DP】322.零钱兑换

题目 法1&#xff1a;动态规划 // 时间复杂度&#xff1a;O(kN) class Solution {public int coinChange(int[] coins, int amount) {int[] dp new int[amount 1];Arrays.fill(dp, amount 1);dp[0] 0;for (int i 1; i < dp.length; i) {for (int coin : coins) {if (…

进程同步与进程互斥-第二十四天

目录 前言 什么是进程同步 什么是进程互斥 四大区 遵循原则 本节思维导图 前言 进程具有异步性&#xff0c;异步性是指&#xff0c;各并发执行的进程以各自独立的、不可预知的速度向前推进&#xff0c;因此为了让进程以我们想要的顺序执行&#xff0c;操作系统引入了“进…

TCP/IP,UDP,DNS,NAT,DHCP,HTTP协议

1.TCP/IP协议 TCP/IP协议是Internet最基本的协议、Internet国际互联网络的基础&#xff0c;由网络层的IP协议和传输层的TCP协议组成。通俗而言&#xff1a;TCP负责发现传输的问题&#xff0c;一有问题就发出信号&#xff0c;要求重新传输&#xff0c;直到所有数据安全正确地传…

概率中的50个具有挑战性的问题[03/50]:轻率的陪审员

一、说明 我最近对与概率有关的问题产生了兴趣。我偶然读到了弗雷德里克莫斯特勒&#xff08;Frederick Mosteller&#xff09;的《概率论中的五十个具有挑战性的问题与解决方案》&#xff08;Fifty Challenge Problems in Probability with Solutions&#xff09;一书。我认为…

如何修复concrt140.dll丢失问题,分享4种有效的方法

在计算机使用的过程中&#xff0c;我们经常会遇到一些错误提示或者系统崩溃的情况。其中之一就是“concrt140.dll丢失”。这个错误通常会导致某些应用程序无法正常运行。为了解决这个问题&#xff0c;我们需要采取一些措施来修复丢失的concrt140.dll文件。本文将介绍五个解决co…

C++ 强制类型转换static_cast<typeName>

C允许通过强制类型转换机制显式地进行类型转换。强制类型转换的格式有两种。 如&#xff1a; 为将存储在变量nData中的int值转换为long类型&#xff0c;可以使用下面的表达式中的一种&#xff1a; (long)nData …

对数函数求导

方法 一般形 复合型 复杂复合型

【编译原理--复习】

知识点整理 第一章 同时伴有表格管理、出错处理 1、词法分析 任务&#xff1a;对构成源程序的字符串进行扫描和分解&#xff0c;识别出单词(如标识符等)符号 输入&#xff1a;源程序 输出&#xff1a;单词符号序列 2、语法分析 任务&#xff1a;根据语言的语法规则对单词符号…

VTK数据结构

只有几何结构没有拓扑结构 #include <vtkSmartPointer.h> #include <vtkPoints.h> #include <vtkPolyData.h> #include <vtkPolyDataWriter.h>int main(int argc, char* argv[]) {// 创建点数据vtkSmartPointer<vtkPoints> points vtkSmartPoin…

数据分析基础之《numpy(5)—合并与分割》

了解即可&#xff0c;用panads 一、作用 实现数据的切分和合并&#xff0c;将数据进行切分合并处理 二、合并 1、numpy.hstack 水平拼接 # hstack 水平拼接 a np.array((1,2,3)) b np.array((2,3,4)) np.hstack((a, b))a np.array([[1], [2], [3]]) b np.array([[2], […

如何在openSUSE上进行远程登录和文件传输, ssh服务开启秘钥和密码认证

ssh服务开启秘钥和密码认证 默认情况下&#xff0c;没有开启密码认证。 解决方案&#xff1a; vim /etc/ssh/sshd_config PermitRootLogin yes #允许root认证登录 PasswordAuthentication yes #允许密码认证RSAAuthentication yes #秘钥认证 PubkeyAuthentica…

drools入门案例

1 业务场景说明 业务场景&#xff1a;消费者在图书商城购买图书&#xff0c;下单后需要在支付页面显示订单优惠后的价格。具体优惠规则如下&#xff1a; 规则编号 规则名称 描述 1 规则一 所购图书总价在100元以下的没有优惠 2 规则二 所购图书总价在100到200元的优惠2…

在服务器上部署SpringBoot项目jar包

以下是在服务器上部署Spring Boot项目jar包的步骤&#xff1a; 打包项目&#xff1a; 使用IDEA或者命令行工具&#xff08;如Maven或Gradle&#xff09;将Spring Boot项目打包为一个可执行的jar文件。如果使用Maven&#xff0c;可以在项目的根目录下运行以下命令来打包项目&…

tampermonkey:Tampermonkey受欢迎的用户脚本管理器油猴

Tampermonkey for Mac是一款用户脚本管理器&#xff0c;主要用于在网页上运行自定义的JavaScript代码&#xff0c;以增强网站的功能和外观。它支持在各种浏览器中使用&#xff0c;包括Chrome、Firefox和Safari等主要浏览器。 以下是Tampermonkey for Mac软件的主要特点&#x…