- 浏览: 734535 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
lingsuch:
Android网络连接判断与处理 -
月光照着我:
写的不错,作为笔记了
Android中LayoutInflater的使用 -
智博王锋:
好文章是要顶的!
Android中LayoutInflater的使用 -
云南白药:
...
Android中LayoutInflater的使用 -
万新one:
理解了许多。解释的不错。3Q.
Android中LayoutInflater的使用
package Assis; import java.awt.*; import java.awt.event.*; import java.awt.image.*; import java.awt.geom.*; import javax.swing.*; import java.io.*; // 图像缩小与放大演示 public class ScaleImageDemo extends JFrame { private static final long serialVersionUID = 1L; private JPanel panel = new JPanel(); // 面板panel用于容纳图像放大、缩小、还原按钮 private JButton jbFile = new JButton("打开图像文件"); // 打开图像文件按钮 private JButton jbZoomIn = new JButton("放大"); // 图像放大按钮 private JButton jbZoomOut = new JButton("缩小"); // 图像缩小按钮 private JButton jbReset = new JButton("还原"); // 图像还原按钮 ScalePane showImagePane = new ScalePane(); // 创建showImagePane对象用于绘制图像 Container content = getContentPane(); // 获得窗口的容器 // 构造函数 public ScaleImageDemo() { super("图像的缩小与放大"); // 调用父类构造器设置窗口标题栏 // 为按钮添加动作监听器 //jbFile.addActionListener(new ButtonActionListener()); jbZoomIn.addActionListener(new ButtonActionListener()); jbZoomOut.addActionListener(new ButtonActionListener()); jbReset.addActionListener(new ButtonActionListener()); jbFile.addActionListener(new ButtonActionListener()); // 把图像放大按钮、图像缩小按钮、图像还原按钮加入panel面板 panel.add(jbZoomIn); panel.add(jbZoomOut); panel.add(jbReset); panel.add(jbFile); // 把showImagePane文件选择组合框、控制面板、状态栏标签加入到窗口内容窗格 content.add(showImagePane, BorderLayout.CENTER); //content.add(jbFile, BorderLayout.NORTH); content.add(panel, BorderLayout.SOUTH); setSize(500, 400); // 设置窗口大小 setVisible(true); // 设置窗口可见 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 关闭窗口时退出程序 } // 使用文件选择器载入图像 public void fileSelect() { JFileChooser chooser = new JFileChooser(); // 实例化文件选择器 chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);// 模式为仅打开文件 chooser.setCurrentDirectory(new File(".")); // 设置文件选择器当前目录 // 设置图像文件过滤器 chooser.setFileFilter(new javax.swing.filechooser.FileFilter() { public boolean accept(File file) { // 可接受的文件类型 String name = file.getName().toLowerCase(); // 获取文件名 return name.endsWith(".png") || name.endsWith(".gif") || name.endsWith(".jpg") || name.endsWith(".jpeg") || file.isDirectory(); } public String getDescription() { return "图像文件"; // 文件描述 } }); int result = chooser.showOpenDialog(this); // 显示文件选择对话框 if (result == JFileChooser.APPROVE_OPTION) { // 得到用户行为 String fileName = chooser.getSelectedFile().getAbsolutePath(); // 得到选择的文件名 showImagePane.loadImage(fileName); // 截入图像并显示 //showImagePane.loadImage("d:/pic.png"); // 截入图像并显示 } } public static void main(String[] args) { new ScaleImageDemo(); } // 按钮事件处理类 class ButtonActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { JButton button = (JButton) e.getSource(); // if (button == jbFile) { // fileSelect(); // } else if (button == jbZoomIn) { showImagePane.scaleX *= 1.25; // 图像x轴方向放大因子 showImagePane.scaleY *= 1.25; // 图像y轴方向放大因子 System.out.println(showImagePane.scaleX+","+showImagePane.scaleY); showImagePane.applyFilter(); // 过滤图像 showImagePane.repaint(); // 重绘showImagePane面板 jbReset.setEnabled(true); } else if (button == jbZoomOut) { showImagePane.scaleX *= 0.8; // 图像x轴方向缩小因子 showImagePane.scaleY *= 0.8; // 图像y轴方向缩小因子 showImagePane.applyFilter(); // 过滤图像 showImagePane.repaint(); // 重绘showImagePane面板 jbReset.setEnabled(true); } else if (button == jbReset) { showImagePane.scaleX = 1.0; // 图像x轴方向放大因子还原为1.0 showImagePane.scaleY = 1.0; // 图像y轴方向放大因子还原为1.0 showImagePane.applyFilter(); // 过滤图像 showImagePane.repaint(); // 重绘showImagePane面板 jbReset.setEnabled(false); } else if (button == jbFile) { fileSelect(); } } } // 显示图像的面板 class ScalePane extends JPanel { private static final long serialVersionUID = 1L; Image image; BufferedImage bufImage; // 用于显示的缓冲区图像 BufferedImage originalBufImage; // 原始缓冲区图像 Graphics2D bufImageG; // 缓冲区图像的图形环境 double scaleX = 1.0; // 图像水平方向的缩放因子 double scaleY = 1.0; // 图像竖直方向的缩放因子 // 截入图像 public void loadImage(String fileName) { image = this.getToolkit().getImage(fileName); // 取得图像 MediaTracker mt = new MediaTracker(this); // 实例化媒体加载器 mt.addImage(image, 0); // 增加图像到加载器中 try { mt.waitForAll(); // 等待图片加载 } catch (Exception ex) { ex.printStackTrace(); // 输出出错信息 } originalBufImage = new BufferedImage(image.getWidth(this), image.getHeight(this), BufferedImage.TYPE_INT_ARGB); // 创建原始缓冲区图像 bufImage = originalBufImage; bufImageG = bufImage.createGraphics(); // 创建bufImage的图形环境 bufImageG.drawImage(image, 0, 0, this); // 传输源图像数据到缓冲区图像中 repaint(); // 重绘组件 } // 过滤图像 public void applyFilter() { if (bufImage == null) return; // 如果bufImage为空则直接返回 BufferedImage filteredBufImage = new BufferedImage((int) (image.getWidth(this) * scaleX), (int) (image.getHeight(this) * scaleY), BufferedImage.TYPE_INT_ARGB); // 过滤后的图像 AffineTransform transform = new AffineTransform(); // 仿射变换对象 transform.setToScale(scaleX, scaleY); // 设置仿射变换的比例因子 AffineTransformOp imageOp = new AffineTransformOp(transform, null);// 创建仿射变换操作对象 imageOp.filter(originalBufImage, filteredBufImage);// 过滤图像,目标图像在filteredBufImage bufImage = filteredBufImage; // 让用于显示的缓冲区图像指向过滤后的图像 repaint(); // 重绘组件 } // 重载容器的paintComponent()方法 public void paint(Graphics g) { super.paintComponent(g); if (bufImage != null) { Graphics2D g2 = (Graphics2D) g; g2.drawImage(bufImage, (this.getWidth() - bufImage.getWidth()) / 2, (this.getHeight() - bufImage.getHeight()) / 2, this); // 绘制图片 } } } }
发表评论
-
Swing中引入Android的NinePatch技术,让Swing拥有Android的外观定制能力
2012-09-21 09:22 1636【摘要】 本文诣在 ... -
JavaSwing实现支持合并拆分的JTable
2010-12-16 15:39 1988GridBagModel:抽象模型接口。该接口用于描述表格中单 ... -
JTable小例子,表格中使用JComboBox下拉按钮
2010-12-16 15:21 5435import java.awt.BorderLayout; ... -
配合滚动面板实现JTable上下翻页的效果
2010-12-16 14:26 3434import java.awt.BorderLayout; ... -
JScrollBar简单演示例子
2010-12-06 19:28 6633import java.awt.*; import java ... -
点击jtable的表头,数据会根据根据表头来排序
2010-12-06 11:47 5149import javax.swing.JFrame; imp ... -
重写JSplitPane的BasicSplitPaneUI
2010-09-18 13:39 1590import java.awt.Color; import ... -
Swing窗口初始最大化的方法
2010-08-20 11:09 79291.设置窗口最大(伪最大化) JFrame frame =n ... -
Tree目录实现拖拽功能演示实例(DragAndDrop)
2010-08-10 16:49 1809import java.awt.BorderLayout; ... -
设置JTextPane指定内容的颜色
2010-05-21 14:29 1382package Assis; import java.a ... -
TreesDemo
2010-05-04 11:19 1109import java.awt.*; import java ... -
TableDemo
2010-05-04 11:17 1210import javax.swing.JTable; imp ... -
分割面板演示JSplitPaneDemo
2010-05-04 11:12 1408//Java Swing 带分隔条的面板代码 impor ... -
StylesExample8
2010-04-08 12:55 1222import javax.swing.*; import j ... -
StylesExample7
2010-04-08 12:54 1017import javax.swing.*; import j ... -
StylesExample6
2010-04-08 12:52 1078import javax.swing.*; import j ... -
StylesExample5
2010-04-08 12:51 1007import javax.swing.*; import j ... -
StylesExample4
2010-04-08 12:50 1132import javax.swing.*; import j ... -
StylesExample3
2010-04-08 12:50 1025import javax.swing.*; import j ... -
StylesExample2
2010-04-08 12:49 1069import javax.swing.*; import j ...
相关推荐
Java图片缩小与放大特效,// 图像缩小与放大演示 public class ScaleImageDemo extends JFrame { private JPanel panel = new JPanel(); //面板panel用于容纳图像放大、缩孝还原按钮 private JButton ...
在实现图像放大缩小功能时,开发者可能会采用以下两种常见的方法: 1. **最近邻插值法**:这是一种简单快速的放大方法,但可能导致图像边缘锯齿状。它通过在原始像素周围寻找最近的颜色来填充新的像素位置。 2. **...
`ScaleImageDemo.java` 是一个Java应用程序,它展示了如何加载图片(例如 `2.jpg`),然后对其进行缩放。下面我们将深入解析这个过程。 1. **加载图片**: 首先,我们需要使用`javax.imageio.ImageIO`类的`read()`...
carsim,simulink联合仿真,自动驾驶基于mpc自定义期望速度跟踪控制,可以在外部自定义期望速度传入sfunction函数,设置了两个不同状态方程,控制量为加速度,加速度变化量提供进行对比,carsim2019
内容概要:本文介绍了一种基于阿基米德优化算法(AOA)的零空闲流水车间调度问题(NIFSP)的求解方法。阿基米德优化算法(AOA)模拟古希腊数学家阿基米德螺旋思想,通过模拟浮力和杠杆原理进行全局搜索和局部寻优。实验结果显示,AOA算法在NIFSP中有较好的表现,能有效降低加工时间和提高流水线效率。 适合人群:对智能制造和调度优化有兴趣的研究人员和工程技术人员。 使用场景及目标:用于制造业和其他相关行业中,解决零空闲流水车间调度的问题,从而优化生产效率和降低制造成本。 其他说明:该论文提供了完整的算法原理、实现步骤以及MATLAB实现的详细代码,方便读者理解和复现研究结果。文中还讨论了AOA算法的优越性及未来改进方向,为今后的研究提供了参考依据。
递进关系-关系图表-多彩微软风-5
图表分类ppt
一、实验目的 1.理解仿射密码的基本原理及加密、解密过程。 2.掌握利用 C 语言实现仿射密码加密与解密的基本方法。 3.通过实例观察仿射密码的加密效果及安全性。 4.通过实现简单的古典密码算法,理解密码学的相关概念,如明文、密文、加密密钥、解密密钥、加密算法、解密算法、流密码与分组密码等。
ACCENTURE - How luxury brands are reinventing for success_CAIG
项目资源包含:可运行源码+sql文件+文档 源码都是精心调试,有文档,可以部署,有费用,谢谢支持。 适用人群:学习不同技术领域的小白或进阶学习者;可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 项目具有较高的学习借鉴价值,也可拿来修改、二次开发。 有任何使用上的问题,欢迎随时与博主沟通,博主看到后会第一时间及时解答。 开发语言:Java 框架:SpringBoot 技术:Vue JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 系统是一个很好的项目,结合了后端服务(SpringBoot)和前端用户界面(Vue.js)技术,实现了前后端分离。
springboot项目基于MVC框架自习室管理和预约系统设计与实现,含有完整的源码和报告文档
项目资源包含:可运行源码+sql文件+文档 源码都是精心调试,有文档,可以部署,有费用,谢谢支持。 适用人群:学习不同技术领域的小白或进阶学习者;可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 项目具有较高的学习借鉴价值,也可拿来修改、二次开发。 有任何使用上的问题,欢迎随时与博主沟通,博主看到后会第一时间及时解答。 开发语言:Java 框架:SpringBoot+uniapp 技术:Vue JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 系统是一个很好的项目,结合了后端服务(SpringBoot)和前端用户界面(Vue.js+uniapp)技术,实现了前后端分离。
图表分类ppt
基于java+springboot+vue+mysql的城镇保障性住房管理系统设计与实现.docx
springboot项目车险理赔信息管理系统修改代码,含有完整的源码和报告文档
奔跑上台阶层级关系PPT模板
基于java+springboot+vue+mysql的编程训练系统设计与实现.docx
PHP语言因其在构建基于数据库驱动的动态网站时展现的高度灵活性,已成为最流行的网站开发工具之一。PHP能够与诸如MySql数据库和Apache服务器等其他开源软件完美结合。然而,随着越来越多的网站采用PHP进行开发,它们也逐渐成为了恶意攻击者的目标,这要求开发者必须做好应对攻击的准备。随着攻击频率的上升,安全问题变得日益重要。《PHP安全基础》一书详细讲解了最常见的攻击方式,并阐述了编写安全代码的方法。通过实践各种攻击手段及其应对策略,读者可以深入理解书中介绍的安全措施。 《PHP安全基础》专注于网络应用中最关键的方面,每一章都通过一个实例(如表单处理、数据库编程、SESSION管理及验证)来讲解。每一章都详细说明了潜在的攻击方法以及防范攻击的技巧。书中主要内容包括: - 防止跨站脚本攻击漏洞 - 防止SQL注入攻击 - 防止Session劫持 《PHP安全基础》的目录如下: - 前言 - 内容简介 - 本书每章都描述了PHP开发中的一个方面。每一章又分为多个小节,每一小节都对该方面的攻击方式和防范技巧进行了讲述。 - 第一章,简介 - 本章提供了安全原则和一些好的
图表分类ppt
家庭微网优化模型matlab 考虑家庭电器设备的微网优化模型,采用matlab编程,采用粒子群算法,模型考虑空调的气温调节作用,有相应参考资料。