|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
微软什么都提供了。你可以试想一下,如果你是新手,你是希望你点一下按钮程序就能运行那,还是想自己一点一点的组织结构,然后打包发部,调错再打包......
要天生一个半通明的成形窗口,而又要制止利用当地的编码,惟有天真地使用screenshot(屏幕快照).
半通明窗口是公共对Swing最为渴求的特征之一.也能够称之为定形窗口,这类窗口有一部分是通明的,能够透过它看到桌面背景和别的的程序.假如欠亨过JNI(JavaNativeInterface当地接口)Java是没法为我们天生一个半通明的窗口的(即便我们能够那样做,还得当地操纵平台好撑持半通明窗谈锋行).但是这些近况没法制止我们对半通明窗口的渴求,经由过程一个我最喜好的手腕screenshot,我们能够棍骗性地完成这个目标.
仿制如许一个的半通明窗口的历程,次要的经由过程以下几点:
1.在窗口显现之前,先取得一个screenshot;
2.把上一步猎取的屏幕快照,作为窗口的背景图
3.调剂地位,以便于我们捕捉的screenshot和实践以后的屏幕完善分离,打造出一种半通明的假象.
方才说到的部分只是小儿科,重头戏在于,怎样在挪动或变更半通明窗口时,实时地更新screenshot,也就是实时更新半通明窗口的背景.
在入手下手我们的游览之前,师长教师成一个类,让它承继JPanel,我们用这个承继类来捕捉屏幕,并把捕捉的照片作为背景.类的详细代码以下例6-1
例6-1。半通明背景组件
publicclassTransparentBackgroundextendsJcomponent{
privateJFrameframe;
privateImagebackground;
publicTransparentBackground(JFrameframe){
this.frame=frame;
updateBackground();
}
/**
*@todo猎取屏幕快照后当即更新窗口背景
*/
publicvoidupdateBackground(){
try{
Robotrbt=newRobot();
Toolkittk=Toolkit.getDefaultToolkit();
Dimensiondim=tk.getScreenSize();
background=rbt.createScreenCapture(
newRectangle(0,0,(int)dim.getWidth(),
(int)dim.getHeight()));
}catch(Exceptionex){
//p(ex.toString());
//此办法没有声名过,由于没法得知高低文。由于不影响实行效果,先正文失落它
ex.printStackTrace();
}
}
publicvoidpaintComponent(Graphicsg){
Pointpos=this.getLocationOnScreen();
Pointoffset=newPoint(-pos.x,-pos.y);
g.drawImage(background,offset.x,offset.y,null);
}
}
<p>
你总不能说你写框架吧,那无疑会加大工作量,现在大多企业采取的是折中的办法,就是改别人写好的框架,可要改框架,前提是你对这个框架足够的了解,这就更难了。 |
|