java怎么插入背景图片 javaweb添加背景图片 您所在的位置:网站首页 flash怎么导入图片做背景 java怎么插入背景图片 javaweb添加背景图片

java怎么插入背景图片 javaweb添加背景图片

2023-06-26 16:51| 来源: 网络整理| 查看: 265

前段时间在用JAVASWING做个客户端的时候,有要在一块主面板上添加背景图片的需求,于是自己在网上找了些资料研究一下,有些网友说用JLabel来做,通过设置它的icon属性来实现,但个人感觉这种做法很HACK,呵呵,而且这种方法容易带来在上面的内容被遮住等等的问题,所以个人更喜欢用一个继承JPanel的类来实现的方法,其实我感觉它跟Web中的层的概念有几分相似吧,只需要把这个“层”加到面板的最下面,作为垫底的,就OK了,来看看怎样实现它:

[java]

viewplain copy print ? 1. import javax.swing.JPanel; 2. import java.awt.Graphics; 3. import java.awt.Graphics2D; 4. import java.awt.Toolkit; 5. import java.awt.Image; 6. 7. public class CustomImgPanel extends JPanel{ 8. private int width = 0; 9. private int height = 0; 10. private String imgPath = ""; 11. 12. public CustomImgPanel(int _width,int _height,String _imgPath){ 13. width = _width; 14. height = _height; 15. imgPath = _imgPath; 16. setSize(width,height); 17. setVisible(true); 18. } 19. 20. public CustomImgPanel(double _width,double _height,String _imgPath){ 21. width = (int)_width; 22. height = (int)_height; 23. imgPath = _imgPath; 24. setSize(width,height); 25. setVisible(true); 26. } 27. 28. @Override 29. public void paintComponent(Graphics gs) { 30. Graphics2D g = (Graphics2D) gs; 31. super.paintComponent(g); 32. //画背景图片 33. Image image = Toolkit.getDefaultToolkit().getImage(getClass().getResource(imgPath)); 34. g.drawImage(image, 0, 0,width,height, this); 35. } 36. }

上面是定义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属性 

由于我的窗口默认情况是最大化的,所以我取的高度和宽度是屏幕的高度和宽度,这个大家根据自己的情况来调整咯,好了,初始化的时候设好了,那当用户改变窗口的大小的时候如果图片大小不改变的话会很难看,这会导致老板的脸色也很难看,呵呵,所以需要监听一个父窗口的大小变化,并根据情况来调整图片的大小,这样才显得比较智能,嘿嘿,有代码有真相:

[java]

viewplain copy print ? 1. 2. privatevoidformComponentResized(java.awt.event.ComponentEvent evt) { 3. // TODO add your handling code here: 4. try{ 5. this.mainPanel.remove(imgPanel); 6. }catch(Exception e){ 7. } 8. imgPanel = null; 9. Dimension newSize = evt.getComponent().getSize(); 10. imgPanel = newCustomImgPanel(newSize.getWidth(),newSize.getHeight()-70,"../form/images/mainBg.jpg"); 11. this.mainPanel.add(imgPanel,-1); 12. }

这个是外层JFrame的监听方法,当改变大小事件触发时,为了避免背景面板重叠或其它不必要的异常情况发生,所以先调用remove方法移除,再设为null清空一次,最后再重新生成并加到-1层中。这样就大功告成啦。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有