温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何实现Swing容器组件的显示效果

发布时间:2021-12-27 15:11:12 阅读:447 作者:小新 栏目:编程语言

这篇文章主要介绍如何实现Swing容器组件的显示效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

本文的演示使用下面几行代码就实现了容器显示的淡入淡出效果:

/**   * 淡入淡出式显示内容组件的容器   * @author William Chen   */  public class GlassBox extends JComponent implements ActionListener{      //常数定义      private static final int ANIMATION_FRAMES=50;      private static final int ANIMATION_INTERVAL=10;      //帧索引      private int frameIndex;      //时钟      private Timer timer;           /** Creates a new instance of GlassBox */      public GlassBox() {      }           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();      }  }  

将GlassBox类作为JFrame的ContentPane就能实现窗口内容显示的淡入淡出效果。GlassBox更常见的使用方式是作为普通容器,放在应用程序的任何地方。本文附带的演示程序是将GlassBox是作为普通容器加入JFrame的ContentPane内的。

Swing灵活强大的扩展和自定义功能得益于其优秀的模型和架构设计。如果程序是仅局限于用几个Label和Button等堆砌起来的简单应用,你很难体会到Swing容器组件的优点,反而会因为它的灵活复杂觉得它不如SWT等编写简单。然而在你面对现实应用中的复杂、灵活多变的界面需求时,Swing的能力就逐步显现了出来了。

以上是“如何实现Swing容器组件的显示效果”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI