来看java swing怎样增加背景图片并能依据窗口巨细举行缩放
为什么外国人还要写那些框架进行代码封装,他们不就是为了别人使用时可以更简单么!如果要达到一个企业级项目的不用框架是很难的。小一些的项目还行,大的光是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系统,又是捆绑,鄙视微软之! 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
页:
[1]