java窗体怎么把图片设置成背景图片

java窗体怎么把图片设置成背景图片,第1张

import java.awt.FlowLayout

import javax.swing.ImageIcon

import javax.swing.JButton

import javax.swing.JFrame

import javax.swing.JLabel

import javax.swing.JPanel

public class bj {

private JFrame frame = new JFrame("背景图片测试")

private JPanel imagePanel

private ImageIcon background

public static void main(String[] args) {

new bj()

}

public bj() {

background = new ImageIcon("C:\\Users\\xin.wen\\Pictures\\2.jpg")// 背景图片

JLabel label = new JLabel(background)// 把背景图片显示在一个标签里面

// 把标签的大小位置设置为图片刚好填充整个面板

label.setBounds(0, 0, background.getIconWidth(),

background.getIconHeight())

// 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明

imagePanel = (JPanel) frame.getContentPane()

imagePanel.setOpaque(false)

// 内容窗格默认的布局管理器为BorderLayout

imagePanel.setLayout(new FlowLayout())

imagePanel.add(new JButton("测试按钮"))

frame.getLayeredPane().setLayout(null)

// 把背景图片添加到分层窗格的最底层作为背景

frame.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE))

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

frame.setSize(background.getIconWidth(), background.getIconHeight())

frame.setResizable(false)

frame.setVisible(true)

}

}

import javax.swing.*

import javax.imageio.*

import java.awt.*

import java.io.*

public class AddImage {

public static void main(String[] args){

new AddImageFrame()

}

}

class AddImageFrame extends JFrame{

public AddImageFrame(){

super("添加背景图片")

setBounds(200,200,500,400)

setDefaultCloseOperation(this.EXIT_ON_CLOSE)

setVisible(true)

AddImagePanel aip= new AddImagePanel()

add(aip)

}

}

class AddImagePanel extends JPanel{

private Image backgroundimage=null

public void paintComponent(Graphics g){

super.paintComponent(g)

try{

backgroundimage=ImageIO.read(new File("E:/picture/http_imgload.jpg")).getScaledInstance(getWidth(),getHeight(),Image.SCALE_FAST)

}catch(IOException e){

e.printStackTrace()

}

g.drawImage(backgroundimage,0,0,null)

image.flush()

}

}

这是设置背景图片的简单代码 你要的主要是 backgroundimage=ImageIO.read(new File("E:/picture/http_imgload.jpg")).getScaledInstance(getWidth(),getHeight(),Image.SCALE_FAST)

javax.image包里面有一个类 ImageIO有一个方法read(File string) 读取一个图片文件返回image对象,File会抛出异常,awt包里面的Image有个方法 getScaledstance(width,height,hints) 是缩放图片到多大,intnts是缩放的算法,取Image字段常量,有很多钟算法,你可以取一种,这个程序里图片的大小取的是容纳它的panel面板的大小,会随着面板的变化充满整个面板,这个变化过程要调用面板的 paintComponent()方法来监视,Graphics 中的drawImage(x,y,observer)方法来实现,observer是安全管理器,可以为null,最后绘画完后刷新就可以了,希望对你有帮助,俺也是初学者,交流为上 ,不过我个人还是认为下面的方法比较好

public void setBak() { //设置窗口背景

((JPanel) this.getContentPane()).setOpaque(false)

ImageIcon img = new ImageIcon(getClass().getResource("picture/http_imgload.jpg"))

JLabel background = new JLabel(img)

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

background.setBounds(0, 0, img.getIconWidth(), img.getIconHeight())

}构造器调用这个方法图片不会缩放,上面的例子 不用缩放的方法也可以做到,就看怎么看了

可以新建个面板,在面板里放入带图片的JLabel,填满面板即可。

JPanel jp = new JPanel()//新建面板

jp.setLayout(new FlowLayout()) //设置面板布局

ImageIcon ii=new ImageIcon(getClass().getResource("/Picture/i.jpg"))

JLabel uppicture=new JLabel(ii)//往面板里加入JLabel

this.setVisible(true)


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

原文地址: http://outofmemory.cn/tougao/11166358.html

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

发表评论

登录后才能评论

评论列表(0条)

保存