JAVA界面设计怎么插入背景图片?

JAVA界面设计怎么插入背景图片?,第1张

可以利用标签组件来设置。

具体方法如下:

利用标签组件来设置,具体代码如下:

JPanelpnlMain=new JPanel()//创建面板pnlMain。

getContentPane().add(pnlMain)//将pnlMain设置为主面板。

Iconi=new ImageIcon("背景.jpg")/*用源图片“背景.jpg”构造一个ImageIcon对象i,需要注意如果图片的路悄携径使用的是相对路径,则图片文件必须放在类文件所在文件夹或项目的根文件夹中,否则图片的路径必须用绝对路径。*/

JLabellblLogo = new JLabel(i)//用指定的图片构造标签对象lb

this.getLayeredPane().add(lb, new Integer(Integer.MIN_VALUE))

//把标签放在第二层JlayerPane上。

lb.setBounds(0, 0,ii.getIconWidth(),i.getIconHeight())

//设置启睁伏标签的尺寸,即背景图象的大小。

getConentPane().setOpaque(false)/*把内容早含面板设置为透明,这样整个框架的背景就不再是内容面板的背景色,而是第二层中标签的图像。*/

pnlMain.add(lb)//将标签添加到主面板pnlMain中。

修改方法:

this.picLabel.revalidate()==〉 this.picLabel.setIcon(picBack)

this.picLabel.revalidate()==〉 this.picLabel.repaint()

this.panCenter.revalidate()==>保持不变

(1)对于revalidate()方法,它是用来通知LayoutManager重新对容器里面的组件进行布局的,你用在JLabel上显然是不合适的。JLable里面则枣的Icon是paint方法绘制的,不是通过LayoutManager布局的,所以应该repaint()。

(2)加载完新的图片之后,JLabel的大小可能会因为图像的关系而发生改变,而这个JLabel是通过BorderLayout安置到JPanel里面咐裂的,所以调用一下JPanel的revalidate()方法重新计算一下布局,其实这个并不是必须的BorderLayout.CENTER默认对当前组件拉伸布局。 另外虽然revalidate会自动调用repaint,但是通常我还是会在revalidate之后再追加一个repaint,因为我们知道衡盯闭Java会自动对重复的repaint *** 作进行合并。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11976321.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-20
下一篇2023-05-20

发表评论

登录后才能评论

评论列表(0条)

    保存