如何实现Swing容器组件的显示效果
这篇文章主要介绍如何实现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容器组件的显示效果”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!
文章标题:如何实现Swing容器组件的显示效果
分享地址:http://myzitong.com/article/isjcdp.html