java怎么给窗体或者面板设置背景图片
展开全部
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());
}构造器调用这个方法图片不会缩放,上面的例子 不用缩放的方法也可以做到,就看怎么看了
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());
}构造器调用这个方法图片不会缩放,上面的例子 不用缩放的方法也可以做到,就看怎么看了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询