- 浏览: 3119664 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (372)
- diy (4)
- linux (19)
- 杂项 (30)
- Swing (21)
- Java2D (21)
- Java3D (5)
- JavaIO (9)
- Java通讯 (5)
- Java设计模式 (3)
- Java多媒体 (0)
- Java算法 (7)
- Spring&EJB (29)
- Javaoffice (4)
- web前端 (23)
- javascript (1)
- php基础 (1)
- eclipse (3)
- 网站相关 (3)
- Apache (4)
- seo (12)
- db (28)
- server (3)
- api (4)
- 异常 (12)
- 计算机网络词汇表 (3)
- 随想录 (52)
- 收藏 (17)
- 犹太人的智慧 (3)
- 多线程 (1)
- jfreechart (7)
- Test (1)
- SorLib (30)
- ruby on rails (1)
最新评论
-
houyutao:
二三四都是错的空字符串也被匹配,*应该改成+
Java中判断字符串是否为数字的五种方法 -
mingyun:
但是 java.util.ArrayList 实现了 remo ...
java.lang.UnsupportedOperationException 解决方案 -
mingyun:
1.因为 Arrays.asList 返回的是 Arrays内 ...
java.lang.UnsupportedOperationException 解决方案 -
leolu007:
用java8新特性String testStr = " ...
java.lang.UnsupportedOperationException 解决方案 -
zhaohuaxishiwzw:
我之前所在的项目就是日本一家证券公司的项目。完全使用的是j2e ...
抛弃EJB(EJB2.0,EJB3.0,EJB4.0)
能不能让Swing控件也有渐隐和渐显的效果呢,答案当然是肯定的。这里也要说明一下Swing这些高级特性的实现机制。Swing里的特效不是靠调用一个方法就可以实现的,而是要我们自己去写这些方法,主要还是重写Swing的public void paint(Graphics g)方法。Swing的一切样式说白了都是利用paint方法“画”上去的,所以说Swing比较慢,当然如果我们考虑Swing主要用来做客户端显示的,稍微慢一点也是可以接受的。
下面说Swing的控件的渐显效果,我想原理还是蛮简单的,不断改变控件的透明度即可。即g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha));
下面是完整的控件代码,该控件您可以认为是一个类似JPanel的容器:
我们利用控件的public void paint(Graphics g) 方法,来设置控件的透明度,然后利用super.paint(g2d)方法重绘页面;重绘时系统会自动调用public void actionPerformed(ActionEvent e) 方法,我们在这里来改变控件的透明度,并且判断控件是否加载完毕,加载完毕就停止计时器。
很简单,效果还不错吧,附件是完整的运行代码。按“图片渐显”按钮,可以反复查看效果。
下图是加载时界面:
下图是加载完成界面:
文章地址:http://javapub.iteye.com/blog/759567
下面说Swing的控件的渐显效果,我想原理还是蛮简单的,不断改变控件的透明度即可。即g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha));
下面是完整的控件代码,该控件您可以认为是一个类似JPanel的容器:
package com.zakisoft.frame; import java.awt.AlphaComposite; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.Timer; /** * @author zakisoft.com * */ public class ZPanel extends javax.swing.JComponent implements ActionListener { private static final long serialVersionUID = 1L; private BufferedImage image; private static final int ANIMATION_FRAMES = 100; private static final int ANIMATION_INTERVAL = 10; private int frameIndex; // 时钟 private Timer timer; public BufferedImage getImage() { return image; } public void setImage(BufferedImage image) { this.image = image; } private int imgWidth; private int imgHeight; public int getImgWidth() { return imgWidth; } public void setImgWidth(int imgWidth) { this.imgWidth = imgWidth; } public int getImgHeight() { return imgHeight; } public void setImgHeight(int imgHeight) { this.imgHeight = imgHeight; } public ZPanel() { } public void setImagePath(String imgPath) { // 该方法不推荐使用,该方法是懒加载,图像并不加载到内存,当拿图像的宽和高时会返回-1; // image = Toolkit.getDefaultToolkit().getImage(imgPath); try { // 该方法会将图像加载到内存,从而拿到图像的详细信息。 image = ImageIO.read(new FileInputStream(imgPath)); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } setImgWidth(image.getWidth(this)); setImgHeight(image.getHeight(this)); } public void paintComponent(Graphics g) { int x = 0; int y = 0; if (null == image) { return; } g.drawImage(image, x, y, image.getWidth(null), image.getHeight(null), null); } public void paint(Graphics g) { if (isAnimating()) { // 根据当前帧显示当前透明度的内容组件 float alpha = (float) frameIndex / (float) ANIMATION_FRAMES; Graphics2D g2d = (Graphics2D) g; g2d.setComposite(AlphaComposite.getInstance( AlphaComposite.SRC_OVER, alpha)); // Renderer渲染机制 super.paint(g2d); } else { // 如果是第一次,启动动画时钟 frameIndex = 0; timer = new Timer(ANIMATION_INTERVAL, this); timer.start(); } } // 判断当前是否正在进行动画 private boolean isAnimating() { return timer != null && timer.isRunning(); } // 关闭时钟,重新初始化 private void closeTimer() { if (isAnimating()) { timer.stop(); frameIndex = 0; timer = null; } } // 动画时钟处理事件 public void actionPerformed(ActionEvent e) { // 前进一帧 frameIndex++; if (frameIndex >= ANIMATION_FRAMES) // 最后一帧,关闭动画 closeTimer(); else // 更新当前一帧 repaint(); } }
我们利用控件的public void paint(Graphics g) 方法,来设置控件的透明度,然后利用super.paint(g2d)方法重绘页面;重绘时系统会自动调用public void actionPerformed(ActionEvent e) 方法,我们在这里来改变控件的透明度,并且判断控件是否加载完毕,加载完毕就停止计时器。
很简单,效果还不错吧,附件是完整的运行代码。按“图片渐显”按钮,可以反复查看效果。
下图是加载时界面:
下图是加载完成界面:
文章地址:http://javapub.iteye.com/blog/759567
- ZPhotoer.zip (14.1 KB)
- 下载次数: 313
发表评论
-
利用JFrame直接显示JFreeChart的图片
2012-06-12 16:38 5289核心代码就是要将一个JFreeChart 对象,写到Buffe ... -
控件位置可以配置的Swing桌面
2011-01-07 17:48 3039用过Wordpress或者Joomla的朋友一定对他们的灵活的 ... -
jfreechart jar包下载
2010-10-15 10:07 6912jfreechart 是java用于生成图表的开源工具包,网上 ... -
GradientPaint类的作用
2010-10-11 15:35 9849GradientPaint是Java2D中专门用来控制渐变的类 ... -
Swing控件(JPanel,Container等)设置背景图片
2010-09-16 11:07 11869Swing控件有直接设置背景颜色的方法,但没有直接设置背景图片 ... -
Java关于JIT的原理和相关知识
2010-09-13 16:31 7187今天在读java.awt.Toolkit类时,遇到了JIT,代 ... -
Java 2D 学习资料和API
2010-09-13 15:56 6677关键词:Java2D,坐标转换,渲染,坐标系,字体 ... -
利用JFreeChart画坐标及曲线图
2010-09-07 16:54 9569关键词:Swing,JFreeChart,坐标,曲线图 运行以 ... -
Java2D特效 文字旋转
2010-09-03 17:12 2347将图形围绕某点按照给定的角度进行旋转 效果图: 源代码: ... -
Java图像缩放 图片缩放
2010-08-15 12:31 9041图像缩放是我们常常用到的一个操作,原理是数字图像处理的事,这里 ... -
类DirectColorModel的作用
2010-08-13 16:11 2943DirectColorModel 类别是使用像素值的 Colo ... -
Java图像渐变
2010-08-13 16:05 7430图像渐变我们大体想一下思路无非是这样:将图像所有的像素点的RB ... -
Java 给图片增加 水印图片 水印文字
2010-07-12 20:49 4312很多时候会用到给图片增加水印,这个时候我推荐利用“光影魔术手” ... -
Java图像变灰 及相关类ColorSpace,ColorConvertOp
2010-06-08 15:49 12663用Java进行图像处理,会遇到ColorSpace这个类:Co ... -
Java图像图片 边缘检测
2010-06-06 20:54 19799对图片进行边缘检测在很多领域是非常重要的,例如:车牌号码的识别 ... -
Java 图像钝化与锐化
2010-06-05 02:08 10325Java图像的钝化和锐化就是一个算法的问题,说白了就是两个方法 ... -
Java图片变亮 变暗
2010-06-05 01:42 4650Java在图片处理领域的功 ... -
Java加载图片 利用Image与BufferedImage
2010-06-04 13:14 50416Image是一个抽象列,BufferedImage是Image ... -
Swing显示图片
2010-06-02 17:48 32505Swing显示图片可以有很多的种选择,例如:可以用JLabel ... -
Java将大图片转成小图片
2010-05-14 16:46 7855我们经常会将一个小的图片变成小一些的图片,利用java可以方便 ...
相关推荐
swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3...
标题中的"Example002-渐显的窗体.rar"显然指的是一个示例程序,它展示了如何在编程中实现一个窗口逐步显示的效果。这通常涉及到图形用户界面(GUI)的设计和动画效果。在IT领域,这种效果可能通过各种编程语言和库来...
swing-layout-1.0.4.jar是org.jdesktop.layout,org.jdesktop.layout.GroupLayout类的工具jar包
Swing-inspector是一款高效工具,专门用于帮助开发者在Java Swing应用程序中快速定位界面元素对应的源代码,从而提高代码查找和调试的效率。在Java开发领域,Swing是用于构建图形用户界面(GUI)的一个重要库,它...
在Eclipse这样的集成开发环境中,`swing-layout-1.0.jar`是一个非常重要的库文件,它扩展了Swing内置的布局管理器,提供了更灵活的界面设计能力。 Swing布局管理器的基础包括以下几种: 1. FlowLayout:流式布局,...
**SWING 教程 - v1.01** 在Java编程中,Swing是一个用于构建图形用户界面(GUI)的库,它提供了丰富的组件和功能,使得开发者可以创建出跨平台、美观且功能强大的应用程序。Swing是Java Foundation Classes (JFC)的...
《深入理解Aspect-Swing-Worker-1.1.jar在Java编程中的应用》 在Java开发领域,库文件的使用是提升代码效率、实现特定功能的关键。今天我们将深度探讨"aspect-swing-worker-1.1.jar.zip"这个压缩包,它包含了一个名...
关于android图片失真的swing-work-1.1架包
swing-layout-1.0.4.jar是java用于图形界面swing开发的jar包
Lucene索引查看工具 Luke。Luke 是查询LUCENE索引文件的工具, 而且用 Luke 的Search可以做查询。Luke is a handy development and diagnostic to Lucene.
Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分。在Java中,Swing提供了丰富的组件库,用于创建美观且功能强大的桌面应用程序。"swing keyboard-master"项目是一...
【纯swing编写--no3.keeper小软件】 在IT领域,Java Swing是一个用于构建桌面应用程序的图形用户界面(GUI)工具包。它属于Java Foundation Classes(JFC)的一部分,提供了丰富的组件库,允许开发者创建美观且功能...
3. **动画效果**:Substance支持各种动态效果,如按钮按下时的下陷效果、窗口最小化和最大化时的过渡动画等,增强用户交互体验。 4. **组件增强**:Substance扩展了Swing组件的功能,例如,它为JTable提供了更丰富...
swing-Java游戏.zipswing-Java游戏.zipswing-Java游戏.zip swing-Java游戏.zipswing-Java游戏.zipswing-Java游戏.zip swing-Java游戏.zipswing-Java游戏.zipswing-Java游戏.zip swing-Java游戏.zipswing-Java游戏....
在本项目中,“用Spring开Swing程序----DBManager(数据库查看器)”是一个结合了Spring框架和Swing GUI工具包的应用,主要用于创建一个数据库管理工具。这个应用允许用户直观地查看、操作数据库,从而简化数据库的...
swing实例-计算器,java编程教学资源
从网上一个博文上搜集来的一些Swing特效的例子,如xp折叠效果_foldered_pane,鼠标悬停提示_tooltip,玻璃效果闪烁_glassbox,日历组件,环形右键弹出菜单等等.....绝对物超所值! 其中部分例子为jar形式,可直接运行......
基于java的开发源码-swing-explorer(Swing开发辅助工具).zip 基于java的开发源码-swing-explorer(Swing开发辅助工具).zip 基于java的开发源码-swing-explorer(Swing开发辅助工具).zip 基于java的开发源码-swing-...
简单java swing闹钟-可运行jar包,只要在本机安装上java,点击jar即可运行。