當前位置:外匯行情大全網 - 期貨行情 - Java Swing也很神奇:環環相扣。

Java Swing也很神奇:環環相扣。

序言

Java怎麽做不好桌面的爭論由來已久。雖然Swing和Java D已經有十幾年的歷史了,也有很多開源的Swing組件比如基德JGoodies aver,但是要把Java作為桌面程序使用,仍然不是壹件容易的事情。“Java很神奇”系列文章只是想通過壹些簡單生動的例子,和妳壹起了解Java,探索Swing。其實妳只需要多壹點創造力和耐心。妳的Java程序也可以很神奇!本文將帶您進入Java的奇妙之旅。

二維套管效應

在網絡通信中,往往需要表達協議之間的承載關系,比如ip協議可以作為高層協議承載在SDH或ATM上,IP作為協議也可以承載更多的高層協議,比如電信中的Voice over IP甚至Everything over IP的概念。用嵌套的三維套筒來表達協議的承載是再完美不過了(如下圖)。

具體實現很簡單。主要代碼如下

進口?Java awt *;?進口?Java awt geom *;?進口?javax swing *;?進口?aver *;?公共?班級?PipleComponent?延伸?JComponent?{?公共?作廢?油漆(圖形?g)?{?圖形D?g d?=?(圖形D)?g;?g d setRenderingHint(rendering hints KEY _抗鋸齒?rendering hints VALUE _ ANTIALIAS _ ON);?外形?parenthoolloshape = create piple(g d averUtil getRandomColor()null);?create piple(g d averUtil getRandomColor()parenthoollowshape);?create piple(g d averUtil getRandomColor()parenthoollowshape);?create piple(g d averUtil getRandomColor()parenthoollowshape);?create piple(g d averUtil getRandomColor()parenthoollowshape);?}?私人?外形?createPiple(圖形D?g d int?x?int?y?int?寬度?int?身高顏色?色形?括號形狀)?{?if(括號形狀!=null){?長方形?bounds = parenthoollowshape get bounds();?長方形?rightClip=new?矩形(邊界x+邊界寬度/邊界y+邊界高度);?面積?剪輯=新?面積(括號形狀);?剪輯添加(新?area(right clip));?g d setClip(夾子);?}?int?circleWidth?=?身高/;?GradientPaint?油漆?=?新的?GradientPaint(x?y?顏色更亮()?x?y?+?(int)?(身高?*?) ?顏色更深()?真);?g d setPaint(油漆);?橢圓D Double?leftCircle?=?新的?橢圓D Double(x circleWidth?/ y?circleWidth?身高);?橢圓D Double?右圓?=?新的?橢圓D雙(x?+?寬度circleWidth?/ y?circleWidth?身高);?int?厚度=;?橢圓D Double?rightHollowCircle?=?新的?橢圓D Double(right circle getX()+粗細?right circle getY()+厚度?rightCircle getWidth()厚度*?right circle get height()thickness *);?長方形?rect?=?新的?矩形(x?y?寬度?身高);?面積?面積?=?新的?面積(左圓);?區域添加(新?面積(rect));?面積減去(新?面積(right circle));?g d填充(面積);?g d setColor(顏色更深());?g d填充(右圓);?油漆?=?新的?GradientPaint(x?y?顏色深灰色?x?y?+?(int)?(身高?*?) ?顏色淺灰色?真);?g d setPaint(油漆);?g d fill(right hollow circle);?g d setClip(空);?回歸?rightHollowCircle?}?公共?靜電?作廢?main(String[]?args)?{?JFrame?框架?=?新的?JFrame();?frame setDefaultCloseOperation(JFrame EXIT _ ON _ CLOSE);?框架集合大小(?);?框架添加(新?piple component());?frame set visible(true);?}?}

三個總結

本文的主要知識點

漸變填充創建壹個GradientPaint並設置明亮和黑暗的填充模式。

就看圖形使用類似於Clip中mask/cut的Java D技術的set Clip功能。

面積的使用主要是面積和其他常見圖形處理技術的交集和合並。詳情請見java awt geom Area類。

用隨機色太簡單了。如果有aver jar,可以直接使用averUtil getRandomColor()。如果沒有,就直接用新顏色。註意使用第四個int參數來增加Alpha透明度的變化。

如果有興趣,可以嘗試用上面的Java D技術達到以下效果。

  • 上一篇:期貨和礦石有關系嗎?為什麽?
  • 下一篇:期貨結算後怎麽計算盈虧
  • copyright 2024外匯行情大全網