重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1)文件要有后缀名
站在用户的角度思考问题,与客户深入沟通,找到永泰网站设计与永泰网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站建设、成都做网站、企业官网、英文网站、手机端网站、网站推广、申请域名、网站空间、企业邮箱。业务覆盖永泰地区。
2)要用Image或BufferedImage对象
3)因为你重写了paint()方法,所以不能在Label里面显示图片。你重写了paint()方法后,整个容器都会变成画布,所以看不到Label组件,自然也就看不到图片。应该在paint方法里面用g.drawImage方法把图片在画布中画出来。参考Java API,Graphics的drawImage方法。
在java swing中需要为容器添加图片,或者背景图片。
提供两种简单的解决方案,一种利用JPanel,另一种利用JLabel
1.JPanel(源代码)
package oo;
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Drawing {
JFrame jframe = new JFrame();
public static JPanel GImage = null;
public Drawing() {
initFrame();
}
// 初始化窗口
public void initFrame() {
// 利用JPanel添加背景图片
GImage = new JPanel() {
protected void paintComponent(Graphics g) {
ImageIcon icon = new ImageIcon("image\\benbenla.jpg");
Image img = icon.getImage();
g.drawImage(img, 0, 0, icon.getIconWidth(),
icon.getIconHeight(), icon.getImageObserver());
jframe.setSize(icon.getIconWidth(), icon.getIconHeight());
}
};
jframe.setTitle("测试背景图片");
jframe.add(GImage);
jframe.pack();
jframe.setVisible(true);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new Drawing();
}
}
2.JLabel源代码
package swing.draw;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Drawing2 {
JLabel jlpic = new JLabel();
JFrame jframe = new JFrame();
public Drawing2() {
init1Frame();
}
public void init1Frame() {
ImageIcon icon = new ImageIcon("image\\benbenla.jpg");
icon.setImage(icon.getImage().getScaledInstance(icon.getIconWidth(),
icon.getIconHeight(), Image.SCALE_DEFAULT));
System.out.println(icon.getIconHeight() + "" + icon.getIconWidth());
jlpic.setBounds(0, 0, 1366, 768);
jlpic.setHorizontalAlignment(0);
jlpic.setIcon(icon);
jframe.setSize(1366, 768);
jframe.add(jlpic);
jframe.pack();
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setVisible(true);
}
public static void main(String args[]) {
new Drawing2();
}
}
用Swing包下的ImageIcon类就可以实现,比如在一个按钮中添加一张图片,就可以用以下代码实现:ImageIcon imageicon =new ImageIcon(String s);JButton b=new JButton(imageicon); 其中参数s是所要添加图片的路径(绝对路径或相对路径)和名字。如想添加D盘下的图片1.jpg,就可以将上面改成:ImageIcon imageicon =new ImageIcon("D:\1.jpg");
可以利用标签组件来设置。
具体方法如下:
利用标签组件来设置,具体代码如下:
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中。