欢迎来到天天文库
浏览记录
ID:39468638
大小:158.29 KB
页数:5页
时间:2019-07-04
《Swing实现透明窗体》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、窗体顶端关于Swing实现透明窗体的。我也很喜欢,收藏! Editor'snote:ThefollowingexamplefromSwingHacksisoneofthebook'smostvisuallydaringhacks--mimickingthearbitrarilyshapedwindowyoumightseeinannativeMP3playerskin.ThehackhereisnecessitatedbythefactthatJavadoesn'tsupportnon-rectangularwi
2、ndows,sotheonlyoptiontomakethisworkisfortheJavawindowtobeawareofwhat'sunderit,andtohandletheimagingofareaswithinthewindow'srectanglebutnotwithinitsarbitraryshape.Readonforhowthisisaccomplished.Createtranslucentandshapedwindows,whileavoidingnativecode,withcleveruseo
3、fascreenshot.OneofthemostcommonlyrequestedSwingfeaturesistransparentwindows.Alsocalledshapedwindows,thesearewindowsthathavetransparentportions,allowingthedesktopbackgroundandotherprogramstoshinethrough.Javadoesn'tprovideanywayofcreatingtransparentwindowswithoutusin
4、gtheJavaNativeInterface(JNI)(andeventhenthenativeplatformmustsupporttransparencyaswell),butthat'snotgoingtostopus.Wecancheatusingoneofmyfavoritetechniques,thescreenshot.Theprocessoffakingatransparentwindowisbasically:1.Takeascreenshotbeforethewindowisshown.2.Usetha
5、tscreenshotasthebackgroundofthewindow.3.Adjustthepositionsothatthescreenshotandtherealscreenlineup,creatingtheillusionoftransparency.Thisistheeasypart.Thehardpartisupdatingthescreenshotwhenthewindowmovesorchanges.Tostartoff,createaJPanelsubclassthatcancapturethescr
6、eenandpaintitasthebackground,asshowninExample6-1Example6-1.Atransparentbackgroundcomponentpublic class TransparentBackground extends Jcomponent { private JFrame frame; private Image background; public TransparentBackground(JFrame frame) { this.frame =
7、 frame; updateBackground( );}public void updateBackground( ) { try { Robot rbt = new Robot( ); Toolkit tk = Toolkit.getDefaultToolkit( ); Dimension dim = tk.getScreenSize( ); background = rbt.createScreenCapture( new Rectang
8、le(0,0,(int)dim.getWidth( ),(int)dim.getHeight( ))); } catch (Exception ex) { p(ex.toString( )); ex.printStackTrace( ); }}pub
此文档下载收益归作者所有