|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
为什么外国人还要写那些框架进行代码封装,他们不就是为了别人使用时可以更简单么!如果要达到一个企业级项目的不用框架是很难的。小一些的项目还行,大的光是MVC模式的设计的编码量就够大的了。还有性能方面,单轮windows,这个工具是微软写的,。
前段工夫在用JAVASWING做个客户真个时分,有要在一块主面板上增加背景图片的需求,因而本人在网上找了些材料研讨一下,有些网友说用JLabel来做,经由过程设置它的icon属性来完成,但团体感到这类做法很HACK,呵呵,并且这类办法简单带来在下面的内容被遮住等等的成绩,以是团体更喜好用一个承继JPanel的类来完成的办法,实在我感到它跟Web中的层的观点有几分类似吧,只必要把这个“层”加到面板的最上面,作为垫底的,就OK了,来看看如何完成它:- importjavax.swing.JPanel;
- importjava.awt.Graphics;
- importjava.awt.Graphics2D;
- importjava.awt.Toolkit;
- importjava.awt.Image;
- /**
- *图全面板,窗体必要加背景图片时用
- *@authorwaitatlee@163.com
- */
- publicclassCustomImgPanelextendsJPanel{
- privateintwidth=0;
- privateintheight=0;
- privateStringimgPath="";
- /**
- *
- *@param_width整型,窗口的宽度
- *@param_height整型,窗口的高度
- *@param_imgPath图片的URL,可用绝对路径
- */
- publicCustomImgPanel(int_width,int_height,String_imgPath){
- width=_width;
- height=_height;
- imgPath=_imgPath;
- setSize(width,height);
- setVisible(true);
- }
- /**
- *
- *@param_width浮点型,窗口的宽度
- *@param_height浮点型,窗口的高度
- *@param_imgPath字符串,图片的URL,可用绝对
- */
- publicCustomImgPanel(double_width,double_height,String_imgPath){
- width=(int)_width;
- height=(int)_height;
- imgPath=_imgPath;
- setSize(width,height);
- setVisible(true);
- }
- @Override
- publicvoidpaintComponent(Graphicsgs){
- Graphics2Dg=(Graphics2D)gs;
- super.paintComponent(g);
- //画背景图片
- Imageimage=Toolkit.getDefaultToolkit().getImage(getClass().getResource(imgPath));
- g.drawImage(image,0,0,width,height,this);
- }
- }
复制代码 下面是界说CustomImgPanel这个类的代码,上面看如何利用它:- doublepanelWidth=Toolkit.getDefaultToolkit().getScreenSize().getWidth();
- doublepanelHeight=Toolkit.getDefaultToolkit().getScreenSize().getHeight()-25-25-20;//(两个25是表里两个窗口题目栏的高度,20是底部更新进度栏的高度)
- imgPanel=newCustomImgPanel(panelWidth,panelHeight,"../form/images/mainBg.jpg");
- this.mainPanel.add(imgPanel,-1);//参数-1的感化是让这个背景图全面板坚持在一切面板的最上面,相称于WEB中的z-index属性
复制代码 检察本栏目更多出色内容:http://www.bianceng.cn/Programming/Java/
因为我的窗口默许情形是最年夜化的,以是我取的高度和宽度是屏幕的高度和宽度,这个人人依据本人的情形来调剂咯,好了,初始化的时分设好了,那当用户改动窗口的巨细的时分假如图片巨细不改动的话会很丢脸,这会招致老板的神色也很丢脸,呵呵,以是必要监听一个父窗口的巨细变更,并依据情形来调剂图片的巨细,如许才显得对照智能,嘿嘿,有代码有原形:- /**
- *监听最外层窗口的resize事务,并依据新的窗口巨细来调剂背景图片的尺寸
- *@paramevt
- */
- privatevoidformComponentResized(java.awt.event.ComponentEventevt){
- //TODOaddyourhandlingcodehere:
- try{
- this.mainPanel.remove(imgPanel);
- }catch(Exceptione){
- }
- imgPanel=null;
- DimensionnewSize=evt.getComponent().getSize();
- imgPanel=newCustomImgPanel(newSize.getWidth(),newSize.getHeight()-70,"../form/images/mainBg.jpg");
- this.mainPanel.add(imgPanel,-1);
- }
复制代码 这个是外层JFrame的监听办法,当改动巨细事务触发时,为了不背景面板堆叠或别的不用要的非常情形产生,以是先挪用remove办法移除,再设为null清空一次,最初再从头天生并加到-1层中。如许就半途而废啦。
没有那个大公司会傻了吧唧用.net开发大型项目,开发了,那等于自己一半的生命线被微软握着呢。而.net不行,限制在window系统,又是捆绑,鄙视微软之! |
|