java中界面美化

java中界面美化

ID:20869913

大小:39.00 KB

页数:11页

时间:2018-10-17

上传者:U-4550
java中界面美化_第1页
java中界面美化_第2页
java中界面美化_第3页
java中界面美化_第4页
java中界面美化_第5页
资源描述:

《java中界面美化》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

java中界面的美化JAVA软件界面美化使用过JAVA软件的人,很多人会对JAVA软件界面的美观不满意,尽管JAVASwing推出了JAVALookAndFeel机制,但这些JAVA可更换机制的外观目前数量实在太有现(网络上可供下载使用的目前大概有30个),开发、定制也不是很容易,难以满足用户快速多变的个性化需求。(据我所知国人当中目前基本没有开发JAVALookAndFeel的,前段时间本人使用了SkinLookAndFeel这个皮肤化的JAVALookAndFeel,l以为日子会好过,不过最终我失望了:(),毕竟同时是专家级的JAVA程序员又是美术大师的人太少了!总之,JavaLookAndFeel虽然好,但开发不易,难以个性化,根本上来说还是没有代码和视图分离。最理想的状态是什么?应该美术设计师设计图形,程序员开发程序,各不相关,互不牵扯,那才是完美的结果。SkinLookAndFee在某种程度上其实已经做到,但它在代码的机制上实在不怎么样,可移植性差,皮肤配置不容易。。。等等。(哎,本人刚开始对她是很期望了,不过还是验证了“期望大失望大”这句话)不过SUN就是这么牛X,其JAVA5.0已经给了我一个很好的答案,使用Synth吧,CustomUIsareabreezewiththenewestSwinglookandfeel,让你不用写JAVA代码也可以轻松创建漂亮的JAVA界面。还等什么,让我们开始Synth时尚之旅行,让你的JAVA软件外观更漂亮吧!注意:本文假定你是个已经入门的JAVA开发者,有基本的JAVAGUI开发经历.如果你现在什么都不懂,也想体验Synth,那就留言吧,我会帮你的.:)。本文的开发环境是Eclipse3.1+JDK5.0,请记得:如果想使用Syth,那么你必须使用jdk5.0。首先,让我们美化一个基本JDK组件:按钮(JButton)的外观。1、在Eclipse开发环境中,建立一个JAVA工程,添加一个一个名为MyButton.java类2、MyButton.java类的代码如下: packagedemo.synth;importjava.awt.FlowLayout;importjavax.swing.JButton;importjavax.swing.JFrame;publicclassMyButton{JFrameframe=newJFrame("TestButtons");JButtonjButton=newJButton("JButton");//按钮publicMyButton(){frame.setLayout(newFlowLayout());frame.getContentPane().add(jButton);}publicvoidshow(){frame.pack();frame.show();}publicstaticvoidmain(String[]args){MyButtontb=newMyButton();tb.show();}}该类可直接运行,运行后效果如下图:3、在以上代码的main()函数中添加以上代码,使得当前程序应用Synth外观,并且加载了mybutton.xml这个配置文件(相当于CSS样式表),因为这个文件的还没有当前按钮的“样式”设置,所以这时候按牛除了文字,什么都没有。外观处于“空白状态”。main()函数中添加的设置Synth外观的代码:SynthLookAndFeelslf=newSynthLookAndFeel();try{slf.load(MyButton.class.getResourceAsStream("mybutton.xml"),MyButton.class);UIManager.setLookAndFeel(slf); }catch(Exceptione){e.printStackTrace();return;}其中,外观样式配置文件mybutton.xml是重点,以后我们的工作就是写这个XML文件的代码,其写法跟CSS样式表基本类似。mybutton.xml代码:当前mybutton.xml的代码很简单,只有:。这时候程序运行效果如图:(略)很抱歉,因为您在网易相册发布了违规信息,账号被屏蔽。被屏蔽期间他人无法访问您的相册。去帮助中心,了解如何重新恢复服务编程之路-界面美化  现在越来越多的软件都有了很Cool的2D造型,什么××××XP啦,××××2002之类的,看来争夺软件霸权的地位,2D界面是必不可少的,有很多人认为Visual Basic语言的先天不足导致它不能够很灵活的改变界面,让俺们来看看究竟吧。  如果大家用过《Windows优化大师》,肯定会被它的界面所倾倒,其实利用ActiveSKIN就可以办到,甚至更爽,但是如果要做的共享软件只是一个文件,在加上几个OCX累赘,似乎很是不爽,看看VB是怎么利用别的东东来实现的吧。  首先新建一个EXE工程,再在窗体上拖几个Label控件,看看Label的强大功能吧,原理就是利用Label来模拟一个按钮,但是首先要将Label控件的属性要调一下,Name:LblBTn,BorderStyle:1,Appearance:0,Alignment:2,  这样一个按钮的雏形就已经出来了,如果工程量很大,可以将多个Label控件的Name属性设为一样的,对于按钮的识别就要靠识别Index属性了,为了方便起见,在进入到代码编辑窗口,输入以下代码:PrivateConstLBL_BACK_COLOR=&HE0E0E0’正常时Label控件的背景色PrivateConstLBL_WHEN_MOUSE_MOVE=&HC0C0C0’鼠标移动时Label的背景色PrivateConstLBL_WHEN_MOUSE_DOWN=&H808080’鼠标按下时Label的背景色再在Form的Load事件中输入以下内容PrivateSubForm_Load()DimCountAsInteger ForCount=0To3’请将此出的3换成你的LblBtn数量的个数-1LblBtn(Count).BackColor=LBL_BACK_COLOR’初始化LblBtn的背景NextCountEndSub然后再在LblBtn的MouseMove和MouseDown事件中来搞定剩余部分:PrivateSubLblBtn_MouseDown(IndexAsInteger,ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)’当鼠标按在LblBtn上时LblBtn(Index).BackColor=LBL_WHEN_MOUSE_DOWN’临时改变LblBtn背景颜色EndSubPrivateSubLblBtn_MouseMove(IndexAsInteger,ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)’鼠标在LblBtn上面移动时触发该事件DimCountAsIntegerDoEvents’暂时将系统控制权教给系统IfButtonThenExitSub’如果按钮被按下就退出该过程ForCount=0To3IfCount<>IndexThen’如果按下的不是其它按钮LblBtn(Index).BackColor=LBL_BACK_COLOR’将背景设为正常ElseLblBtn(Index).BackColor=LBL_WHEN_MOUSE_MOVE’将背景设为鼠标移动的背景EndIfNextCountEndSubPrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle) DimCountAsIntegerDoEventsForCount=0To3LblBtn(Count).BackColor=LBL_BACKCOLOR’恢复背景NextCountEnd  本来利用Windows的消息系统来完成这一“艰巨”的任务最简单,可问题就来了,Label控件没有窗口句柄怎么办?可是此问题与题无关,写了会有骗稿费之:)OK,Label控件就讲到这里,在来说说TextBox控件,  各位看关恐怕看惯了白颜色的背景,那么就换换颜色以养养俺们那和绵羊一样的眼睛(为什么说绵羊?俺也不知道),可是VB提供的RGB函数弄出来的颜色不是怎么好看,这里俺来教大家一个小Tip,RGB函数的Red,Green,Blue这三个参数若一样,则产生的颜色是灰度,当然越接近白颜色越好,但也不能让各位看不出来,俺建议TextBox的背景为RGB(235,235,235),各位还是实战一下,将一个TextBox拖到窗体上,属性设置如下Appearance0BorderStyle1MutilLineTrue千万不要设置ScrollBars属性,否则会影响效果在Form的Load事件中初始化TextBoxDimbkColorAsLongPrivateSubForm_Load()bkColor=RGB(235,235,235)Text1.BackColor=bkColorEndSub在Form和Text1的MouseMove事件中:PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAs Integer,XAsSingle,YAsSingle)Text1.BorderStyle=0EndSubPrivateSubText1_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)DoEventsText1.BorderStyle=1EndSub在按下F5试试是不是很Cool?  可能各位看关玩过石器时代,一定会对里面的TextBox的效果感到很爽,VB还不是可以做到,有焦点的控件可以使用SetFocus方法来为其设置焦点,可是一个窗体上如果控件太多了,一个一个的用SetFocus是不是太傻了?这一节的主角就是--------API函数,首先声明:PrivateTypePOINTAPIxAsLongyAsLongEndTypePrivateDeclareFunctionGetCursorPosLib"user32"Alias"GetCursorPos"(lpPointAsPOINTAPI)AsLongPrivateDeclareFunctionWindowFromPointLib"user32"Alias"WindowFromPoint"(ByValxPointAsLong,ByValyPointAsLong)AsLongPrivateDeclareFunctionSetFocusLib"user32"Alias"SetFocus"(ByValhwndAsLong)AsLong但是这里的SetFocus会和控件的SetFocus会搞混淆,改改吧,PrivateDeclareFunctionnSetFocusLib"user32"Alias "SetFocus"(ByValhwndAsLong)AsLong只要Alias指向的接口是对的前面的函数名称简直就是摆设,在建立一个过程:PublicFunctionsSetFocus()AsLongDimCPosAsPOINTAPI,SUCcessfullAsBoolean,hWndAsLongDoEventsSuccessfull=GetCursorPos(CPos)IfNotSuccessfullThenExitSub’如果未成功则退出该过程hWnd=WindowFromPoint(CPos.x,CPos.y)sSetFocus=nSetFocus(hWnd)EndSub  在窗体上放一个Timer控件,Interval属性设为100,就是0.1秒,在Timer1控件的Timer事件中填入sSetFocus,在运行一下看看,效果怎么样?  可是有的先生小姐要问了,TextBox难道就不能用ScrollBar吗?非也非也,选工程->部件->MicrosoftWindowsCommonControls-26.0(SP3)就是你的答案,至于卷动TextBox就去研究SendMessage函数吧,否则又有骗稿费之嫌,如果想作绿色软件,不想用控件,可以用俺前面讲到的Label控件,利用字体Webdings来模拟ScrollBar,需要注意的是,如果模拟ScrollBar,上下左右箭头分别是5,6,3,4,别忘了把字体设为Webdings  再来讲讲窗体的美化,其实将BorderStyle属性设为0就是很好的2D美化;)可是,这样一来,问题又来了,怎么办?凡事都要请API来帮忙,这里需要两个API,一下是该API的声明:PublicDeclareFunctionReleaseCaptureLib"user32"Alias"ReleaseCapture"()AsLong注释:这个API是用来解下鼠标的追踪器,关于他的过多用法以及详细介绍可以写信向俺咨询,还有 PublicDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong’这个该不要俺多介绍了吧PublicConstHTCAPTION=2’代表窗体的标题区PublicConstWM_NCLBUTTONDOWN=&HA1’表示非工作区左键按下  原理很简单,卸下鼠标追踪器后向Form发送一个移动窗体的消息,其实做到这一点的方法很多,但俺个人认为这一种最简单,添加一个过程:PublicSubMoveForm(hWndAsLong)DoEventsReleaseCaptureSendMessagehWnd,WM_NCLBUTTONDOWN,HTCAPTION,0&EndSub在Form的MouseMove事件中:PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=vbLeftButtonThenMoveFormhWnd’如果按下鼠标左键就移动窗体EndSub台下的这位小姐又纳闷了,可是光秃秃的窗体没有了标题栏也不好看,俺要向这为小姐推荐俺的东东-ActiveX控件,ToolSign,需要的人可以写信给俺联系,该控件需要在代码编辑区域内添加一下代码:’一下声明是用在ToolSign的AutoQuit属性的PublicConstEXIT_FORCE=2’注意,在VB中运行的时候如果选用此退出方式,VB也会退出PublicConstEXIT_MESSAGE=1’由操作系统发送关闭消息PublicConstEXIT_CUSTOM=Not(EXIT_FORCEOrEXIT_MESSAGE)’自定义 将其注册后在部件栏中把e-DogkidStudioToolsSign打钩,添加到工具箱中,双击加入到窗体中,在Form的Load事件中添加一下初始化代码:PrivateSubForm_Load()WithSign1.AutoQuit=EXIT_CUSTOM.ParentsHWND=hWnd’填了此属性可以直接用ToolSign来移动窗体而不需要前面的代码EndWithEndSubSign1的Click事件PrivateSubSign1_Click()End’关闭程序EndSub在Form的Resize事件中添加一下代码:PrivateSubForm_Resize()Sign1.Width=WidthEndSub如果想让窗体可以改变大小,可以修改一下属性Caption""BorderStyle2或5ControlBoxFalse实际情况如图  不知道各位看关见过爆炸试的窗体没有?,没有见过可以从俺要另外一个俺自己的ActiveXDLL,我的那个东东其实是给我的Software作运行库的,各位若不嫌弃,可以用用,注册后在工程->引用->e-DogkidRuntimeLibrary然后在窗体Load事件中输入:PrivateSubForm_Load()DimSystemAse_Dogkid_Runtime_Library.System SetSystem=Newe_Dogkid_Runtime_Library.SystemShowSystem.BoomIthDC,60,Width,Height,Left,TopSetSystem=NothingEndSub

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭