JavaSwing也惊艳之二:环环相套

一、序言

关于“Java做不好桌面”的争论已经由来已久。虽然Swing和Java2D已经有超 过十年的历史,也有JIDE、JGoodies、TWaver等不少开源Swing组件,但是用 Java做桌面程序仍然不是一件轻松的事。本《Java也惊艳》系列文章,就是想通 过一些简单生动的例子,和大家一起认识Java、探索Swing。其实你只需要多一 点创意、多一点耐心,你的Java程序也可以“惊艳”!本文就带您一起进入Java 的惊艳之旅。

二、立体套管效果

在网络通讯中,经常要表达协议之间的“承载”关系。例如,IP协议作为高 层协议可以承载在SDH上,也可以承载在ATM协议上。同样,IP作为协议还可以承 载更多的高层协议,例如Voice over IP,甚至电信中Everything over IP的概 念。在表现上,用相互嵌套的立体套管来表现协议的“承载”是再合适不过了( 如下图)。

具体实现很简单,主要代码如下:

import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

import twaver.*;

public class PipleComponent extends JComponent {

     public void paint(Graphics g) {
         Graphics2D g2d = (Graphics2D) g;
         g2d.setRenderingHint (RenderingHints.KEY_ANTIALIASING,  RenderingHints.VALUE_ANTIALIAS_ON);
         Shape parentHollowShape=createPiple (g2d,100,100,200,200,TWaverUtil.getRandomColor(),null);
         createPiple (g2d,120,120,280,40,TWaverUtil.getRandomColor (),parentHollowShape);
         createPiple (g2d,130,170,310,40,TWaverUtil.getRandomColor (),parentHollowShape);
         createPiple (g2d,140,220,290,50,TWaverUtil.getRandomColor (),parentHollowShape);
         createPiple (g2d,130,190,300,30,TWaverUtil.getRandomColor (),parentHollowShape);
     }

     private Shape createPiple(Graphics2D g2d,int x, int  y, int width, int height,Color color,Shape parentHollowShape)  {
         if(parentHollowShape!=null){
             Rectangle  bounds=parentHollowShape.getBounds();
             Rectangle rightClip=new Rectangle (bounds.x+bounds.width/2,bounds.y,3000,bounds.height);
             Area clip=new Area (parentHollowShape);
             clip.add(new Area(rightClip));
             g2d.setClip(clip);
         }
         int circleWidth = height/3;
         GradientPaint paint = new GradientPaint(x,
                                                  y,
                                                  color.brighter(),
                                                  x,
                                                  y + (int) (height * 0.65),
                                                  color.darker(),
                                                  true);
         g2d.setPaint(paint);
         Ellipse2D.Double leftCircle = new  Ellipse2D.Double(x - circleWidth / 2, y, circleWidth,  height);
         Ellipse2D.Double rightCircle = new  Ellipse2D.Double(x + width - circleWidth / 2, y, circleWidth,  height);

         int thickness=4;
         Ellipse2D.Double rightHollowCircle = new  Ellipse2D.Double(rightCircle.getX()+thickness,
             rightCircle.getY()+thickness,
             rightCircle.getWidth()-thickness*2,
             rightCircle.getHeight()- thickness*2);

         Rectangle rect = new Rectangle(x, y, width,  height);
         Area area = new Area(leftCircle);
         area.add(new Area(rect));
         area.subtract(new Area(rightCircle));
         g2d.fill(area);
         g2d.setColor(color.darker());
         g2d.fill(rightCircle);

         paint = new GradientPaint(x,
                                   y,
                                   Color.darkGray,
                                   x,
                                   y + (int) (height * 0.4),
                                   Color.lightGray,
                                   true);

         g2d.setPaint(paint);
         g2d.fill(rightHollowCircle);

         g2d.setClip(null);

         return rightHollowCircle;
     }

     public static void main(String[] args) {
         JFrame frame = new JFrame();
         frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
         frame.setSize(800, 600);
         frame.add(new PipleComponent());
         frame.setVisible(true);
     }
}

时间: 2024-12-22 21:45:23

JavaSwing也惊艳之二:环环相套的相关文章

JavaSwing也惊艳之一:水晶之恋

一.序言 关于"Java做不好桌面"的争论已经由来已久.虽然Swing和Java2D已经有超 过十年的历史,也有JIDE.JGoodies.TWaver等不少开源Swing组件,但是用 Java做桌面程序仍然不是一件轻松的事.本<Java也惊艳>系列文章,就是想通 过一些简单生动的例子,和大家一起认识Java.探索Swing.其实你只需要多一 点创意.多一点耐心,你的Java程序也可以"惊艳"!本文就带您一起进入Java 的"水晶之恋"

Onlylady编辑车展偶遇古天乐男女车模比惊艳(二)

[ 女人志讯] 娱乐频道原创上周末Onlylady的编辑亲自探访2011上海车展,最大的感受就是拍车模的比拍车的人多.从前几年开始,许多品牌开始打破常规请来男车模吸引女士的注意,本届车展最受人关注的车模之一就是莲花汽车的巴西籍男车模,厂商还特意增加了与车模合影项目招揽人气.离开车展时还意外偶遇古乐天,可惜没有来得及拍照就被保安拦住了.车展开幕以来陆续有明星前往观看,看来撞星地点又多了个车展.( 女人志编辑bobo撰稿) [ 声明] 男女车模比惊艳(一) 男女车模比惊艳(三)[page] [ 声明

【V直播】三专家解读波士顿动力Atlas惊艳后空翻7大技术难点

会后空翻的波士顿动力Atals机器人 三位嘉宾分别是: 段晋军,东南大学博士生,2015年9月-2016年9月在新加坡南洋理工大学访学.研究方向是多机器人协作.基于阻抗模型的灵巧双臂位置力协调控制.增强学习等. 孙广彬,东北大学工学博士,研究方向为多臂.多足机器人智能运动规划.控制及人机协作.2010年9月至2012年9月在卡耐基梅隆大学交流访问,2015年11月至2017年2月在新加坡南洋理工大学从事博士后研究. 梁聪慧,目前是新加坡科技研究局先进制造与技术中心的高级科学家,是一名经验丰富的机

从未如此惊艳!你好,SuperTextView

[引自CoorChice的博客]简介 欢迎使用SuperTextView,这篇文档将会向你展示如何使用这个控件来提高你构建项目的效率. SuperTextView继承自TextView,它能够大量的减少布局的复杂程度,并且使得一些常见的效果变得十分容易实现且高效.同时,它内置了动画驱动,你只需要合理编写Adjuster,然后startAnim()就可以看到预期的动画效果.它仅仅是一个控件,所以你可以不费吹灰之力的在你的项目中集成使用. 特点 你从此不必再为背景图编写和管理大量<shape>文件

“智云大咖秀”:大咖摄影师谈惊艳亮相的“大咖级”设备

古人云,善书者不择笔. 古人又云,工欲善其事必先利其器. 古人很矛盾. 这两句话如果用在影像创作这个领域,可以说都有道理:没有好的设备,创意大师一样能够拍出足够惊艳的作品:有足够强的设备,但是头脑中创意感知弱.技术操作缺乏,拍出来的作品也同样不够出彩. 但是,对于一个本身足够牛的摄影师/摄像师来说,一个好的设备能帮助他们更好的展现他们的创意,做出更多的作品. 上周末,摄影稳定系统及解决方案的开发商和生产商智云在广州天河希尔顿酒店举办了一场稳定器线下交流分享会--"智云大咖秀"暨&quo

长沙现最惊艳房车38450元自己动手改成(组图)

38450元,自己动手,改成"房车"--长沙惊现最牛"Mini Bus",揭密它是如何改造成功的 走在川流不息的街头,随处可见的都是千篇一律的车型,即使是偶尔飞驰而过的顶级名车,也渐渐开始让人产生视觉疲劳. 在长沙,你是否见过这样一辆车--它不豪华也并不名贵,却总是在惊艳的伪装下穿梭于夜色中,引来超高的回头率和对车型众说纷纭的猜测.其实,这是一辆由长安之星仿大众TI改装而成的Mini Bus,粉嫩可爱的外观和温馨的内饰布置让它看起来就像一台房车,也是国内独一无二的.

“惊艳·夺慕 酷派大观8730线下体验会”举办

2013年1月26日下午,宇龙酷派公司与手机中国联合在北京新七天咖啡厅举行了"惊艳·夺慕 酷派大观8730线下体验会".笔者也于中午赶到了体验会现场,当时已经陆续有网友签到,主办方也专门为大家准备了小点心.水果和饮料. 作为国内知名品牌,酷派刚刚过完20周岁生日.在这20年中,它推出了众多经典的产品,无论在销量还是http://www.aliyun.com/zixun/aggregation/32063.html">市场占有率方面都有着不俗的表现.同时,凭着出众的品质和

GSMA大会中国移动精彩惊艳 拥抱智慧生活

6月11日至13日,为期三天的2014亚洲移动通信博览会和GTI亚洲大会在上海成功落下帷幕.大会以"构建互联世界"为主题,聚焦TD-LTE发展.行业信息化与物联网应用.智慧城市建设."和"特色业务等领域,广邀中央政府高层领导.GTI运营商.全球产业链合作伙伴等企业,开展专题研讨和现场体验活动.在大会上,新理念交流碰撞,新技术演示应用,新成果集聚纷呈,新业务发布展望,移动科技让万物互联的无限可能和美好愿景让公众惊艳. 中国移动作为此次大会的铂金合作伙伴,以"

AWE上奥克斯L系列产品就让各位业内人士大呼惊艳

从来没有一款空调像奥克斯L系列这样还未上市就引发大量热议,在 2014年3月初AWE(中国家电博览会)上奥克斯L系列(自由系列)产品就让各位业内人士大呼惊艳,到4月底奥克斯空调20周年庆典中,L系列的重磅推出被大家一致看好,L系列产品可谓是吊足了众人的胃口.距离L系列上市时间8月份已不到一个月,那么,L系列将会以何种功能来应对大家的期待呢,快来跟小编一起分析各种"蛛丝马迹",进入奥克斯新品L系列功能大猜想.猜想一:能否实现复合型产品功能的深度升级?L系列作为精品空调悦系列的后辈,势必会