返回顶部
首页 > 资讯 > 精选 >Swing如何实现渐显效果
  • 716
分享到

Swing如何实现渐显效果

2023-06-17 11:06:24 716人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关Swing如何实现渐显效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。能不能让Swing控件也有渐隐和渐显的效果呢,答案当然是肯定的。这里也要说明一下Swing这些高级特性的

这篇文章将为大家详细讲解有关Swing如何实现渐显效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

能不能让Swing控件也有渐隐和渐显的效果呢,答案当然是肯定的。这里也要说明一下Swing这些高级特性的实现机制。Swing里的特效不是靠调用一个方法就可以实现的,而是要我们自己去写这些方法,主要还是重写Swing的public void paint(Graphics g)方法。Swing的一切样式说白了都是利用paint方法“画”上去的,所以说Swing比较慢,当然如果我们考虑Swing主要用来做客户端显示的,稍微慢一点也是可以接受的。

下面说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;     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) 方法,我们在这里来改变控件的透明度,并且判断控件是否加载完毕,加载完毕就停止计时器。

很简单,效果还不错吧,附件是完整的运行代码。按“图片渐显”按钮,可以反复查看效果。

下图是加载时界面:

Swing如何实现渐显效果

下图是加载完成界面:

Swing如何实现渐显效果

关于“Swing如何实现渐显效果”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: Swing如何实现渐显效果

本文链接: https://lsjlt.com/news/288614.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Swing如何实现渐显效果
    这篇文章将为大家详细讲解有关Swing如何实现渐显效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。能不能让Swing控件也有渐隐和渐显的效果呢,答案当然是肯定的。这里也要说明一下Swing这些高级特性的...
    99+
    2023-06-17
  • CSS如何实现渐变效果
    这篇文章主要介绍CSS如何实现渐变效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!线性渐变( linear-gradient )background-image: linear-gradient(to&n...
    99+
    2023-06-08
  • jquery如何实现div渐隐效果
    这篇文章主要介绍了jquery如何实现div渐隐效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇jquery如何实现div渐隐效果文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2024-04-02
  • css如何实现图片的渐渐隐藏效果
    这篇文章主要讲解了“css如何实现图片的渐渐隐藏效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“css如何实现图片的渐渐隐藏效果”吧! ...
    99+
    2024-04-02
  • css3如何实现高度渐变效果
    这篇文章主要介绍“css3如何实现高度渐变效果”,在日常操作中,相信很多人在css3如何实现高度渐变效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”css3如何实现高度渐变...
    99+
    2024-04-02
  • CSS3如何实现径向渐变效果
    这篇文章将为大家详细讲解有关CSS3如何实现径向渐变效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。   所谓径向渐变(RadialGradients)就是由它们的中...
    99+
    2024-04-02
  • html5如何实现Photoshop渐变色效果
    小编给大家分享一下html5如何实现Photoshop渐变色效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 代码如下: <!DOCTYPE html><head&...
    99+
    2024-04-02
  • 如何在Android中实现渐显按钮的左右滑动效果
    先看下运行效果:    程序结构: MainActivity文件中代码: 代码如下:package com.android.buttonpageflippe...
    99+
    2022-06-06
    动效 按钮 Android
  • CSS中如何实现线性渐变效果
    本文小编为大家详细介绍“CSS中如何实现线性渐变效果”,内容详细,步骤清晰,细节处理妥当,希望这篇“CSS中如何实现线性渐变效果”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。li...
    99+
    2024-04-02
  • HTML+CSS如何实现文本效果、渐变效果、边框图片效果
    这篇文章给大家分享的是有关HTML+CSS如何实现文本效果、渐变效果、边框图片效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。文本阴影文本裁剪文本描边文本填充线性渐变径向渐变边...
    99+
    2024-04-02
  • jQuery如何实现字体颜色渐变效果
    这篇文章给大家分享的是有关jQuery如何实现字体颜色渐变效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体如下:jQuery不允许css属性值为非数字的属性进行动画处理,比...
    99+
    2024-04-02
  • css3如何实现阴影、倒影、渐变效果
    这篇文章主要介绍css3如何实现阴影、倒影、渐变效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、效果做:二、先是建立两个文本不做处理运行如图三、给第一个div字体加上阴影tex...
    99+
    2024-04-02
  • CSS如何实现背景渐变过渡效果
    今天小编给大家分享一下CSS如何实现背景渐变过渡效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2024-04-02
  • Android如何实现渐变色水波纹效果
    这篇文章主要介绍了Android如何实现渐变色水波纹效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。项目中使用到的效果,效果图如下:代码实现:public cla...
    99+
    2023-06-21
  • DW网页元素如何制作渐隐渐现效果
    这篇文章主要介绍DW网页元素如何制作渐隐渐现效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Dreamweaver中想要使用jQ效果实现网页元素的渐隐渐现钉钉效果,该怎么制作呢?方法如下打开Dreamweaver,...
    99+
    2023-06-08
  • jquery实现图片渐变效果
    在网页设计中,图片渐变效果的应用越来越常见,它不仅能够给网页增加美观度,同时也能够吸引用户的注意力。今天,我们将通过jQuery实现图片渐变效果。首先,在HTML中,我们需要先插入一张图片:<img src="image.j...
    99+
    2023-05-14
  • css3如何实现wifi信号逐渐增强效果
    小编给大家分享一下css3如何实现wifi信号逐渐增强效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!效果图下面是实现代码:<!DOCTYPE html> <...
    99+
    2024-04-02
  • 如何使用css3给图片实现渐变效果
    小编给大家分享一下如何使用css3给图片实现渐变效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!浏览器支持情况IEFFChro...
    99+
    2024-04-02
  • 如何使用CSS3实现重复径向渐变效果
    这篇文章将为大家详细讲解有关如何使用CSS3实现重复径向渐变效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。   代码示例如下:   <!DOCTYPE>...
    99+
    2024-04-02
  • 如何使用CSS3实现重复线性渐变效果
    这篇文章主要为大家展示了“如何使用CSS3实现重复线性渐变效果”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用CSS3实现重复线性渐变效果”这篇文章吧。 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作