java添加背景图片
Ⅰ 如何在java的窗口中添加背景图片
class
p
extends
jpanel
{
public
void
paint(graphics
g)
{
super.paint(g);
try
{
file
f
=
new
file("g:\\4.jpg");
url
url
=
f.touri().tourl();
imageicon
img
=
new
imageicon(url);
g.drawimage(img.getimage(),
0,
0,
this);
}
catch
(exception
e)
{
}
}
}
继承jpanel
重写paint方法.
如果是label的话,有属性可以添加背景图片
Ⅱ java中如何设置背景图片
1 利用标签组件来设置
标签本来是一种最简单的组件,为什么可以将它设置成为一个窗体的背景呢?首先还是要了解框架JFrame中的层次结构。JFrame中的层次分布及相对关系是:最底层是JRootPane,第二层是JlayerPane,最上层就是ContentPane,也正是我们常说的内容面板。所以一般我们拖放的控件就是在ContentPane层上。也就是说我们只需将背景图片放在JFrame的第二层是JlayerPane上,再把内容面板ContentPane设置为透明,则第二层JlayerPane上放置的图片即成为内容面板的背景了。具体代码如下:
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中。
用标签组件JLabel来设置窗体背景,其扩展性上比较差,且在标签上不能放置其他组件,比如:在放置一个JButton,整个布局背景图就错乱。导致这种现象是因为Java加载组件是有顺序的,作为背景的JLabel的代码一定要放在全部组件代码的最后,这样JLabel的背景图片才不会被其他组件遮住,从而使整个布局背景错乱。所以采用这种方式来设置窗体背景有很大的局限性。因此最好是采用以下方式来设置窗体背景。
2 通过JPanel面板来设置窗体背景
JPanel面板是Java中的容器之一。而Java中的容器是没有背景图片的属性的,它们只有背景颜色,如果需要在JPanel面板上设置窗体背景,就需要重写paintComponent(Graphics g)方法,即把所要设置的背景图片画上作为JPanel面板的背景。具体实现如下:
首先定义一个JPanel的子类BjPanel,由于JPanel的构造方法不能添加图像,因此在创建此子类的时候先用getImage载入一幅背景图片,在重写paintComponent(Graphics g)方法时,利用drawImage方法将其逐渐绘制到屏幕上,并将该面板添加到框架中,最后将该面板设置为透明。其代码如下:
import java.awt.*;
import javax.swing.*;
public class bkground
{
public static void main(String args[])
{
BjFramef=newBjFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
class BjFrame extends JFrame
{
public BjFrame()
{
setSize(WTH,HHT);
BjPanel pl=new BjPanel();
Container contentPane=getContentPane();
contentPane.add(pl);
pl. setOpaque(true);
}
public static final int WTH=300;
public static final int HHT=200;
}
class BjPanel extends JPanel
{
Image im;
public BjPanel()
{
im=Toolkit.getDefaultToolkit().getImage("背景.jpg");//需要注意的是如果用相对路径载入图片,则图片文件必须放在类文件所在文件夹或项目的根文件夹中,否则必须用绝对路径。
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
int imWidth=image.getWidth(this);
Int imHeight=image.getHeight(this); //定义图片的宽度、高度
int FWidth=getWidth();
int FHeight=getHeight();//定义窗口的宽度、高度
int x=(FWidth-imWidth)/2;
int y=(FHeight-imHeight)/2;//计算图片的坐标,使图片显示在窗口正中间
g.drawImage(image,x,y,null);//绘制图片
}
}
Ⅲ java程序中如何插入背景图片
我们继承(扩展一个 JPanel / JFrame) 之类的组件,覆盖它的 paintComponent(Graphics g) 方法,因为 Swing 为了支持 Look and Fee (皮肤效果),把这些绘图操作委托给了某某UI,基本上每个组件都有一个对应的UI 的不同版本,比如 Windows XP 和 Windows Classic 经典样式,还有 Linux 上经典金属质感的样式。我们如果只是替换背景图,不需要弄个UI,就直接用 paintComponent 方法来做。
例如:
下面是 ComponentUI 类的方法,
看下面这个代码,当不透明时先涂背景色,然后再来 paint 组件。所以你的操作类似于,先把背景图片缩放到100%,能铺满这个背景,然后先涂背景图,再来涂孩子控件。
至少具体细节,你可以写一个自己的某某UI 类,在 JPanel 上 myPanel.setUI 替换掉之后,我们在这个自己的 UI 类中的方法添加行断点,观察 Swing 在什么时候进来了,根据 Eclipse debug 视图提供的 Thread Stack 可以查看各级的方法名并自动跳到对应的JDK自带的源码中。
publicvoipdate(Graphicsg,JComponentc){
if(c.isOpaque()){
g.setColor(c.getBackground());
g.fillRect(0,0,c.getWidth(),c.getHeight());
}
paint(g,c);
}
Ⅳ java如何在布局中添加图片作为背景问题,怎么解决
简单来说就是重写paint方法,然后调用画笔的drawImage这个方法。
如:
对一个JPanel加入背景图片“bg01.png”,那么就重写paint这个方法如下
在类里
/**
*
背景图片
*/
Image
backgroundImage
=
null;
//这就是重写paint方法
public
void
paint(Graphics
g)
{
loadRecources();
if(backgroundImage
!=
null)
{
g.drawImage(backgroundImage,
0,
0,
this);
}
}
public
void
loadRecources()
{
//载入背景图片
if(backgroundImage
==
null)
{
try
{
backgroundImage
=
ImageIO.read(new
File("resources/Images/bg01.png"));
}
catch
(IOException
e)
{
System.out.println("缺少背景图片");
JOptionPane.showMessageDialog(this,
"找不到背景图片!",
"文件缺失",
JOptionPane.ERROR_MESSAGE);
}
}
}
这里只是写的一个示例代码,lz看看,然后分析下写一个类,然后如此尝试下,应该很快就能成功。
Ⅳ 怎么在Java里添加背景图片
可以新建个面板,在面板里放入带图片的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);
Ⅵ java中如何增加背景图片
一个例子:
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);
}
}
Ⅶ java窗体如何添加背景图片
Ⅷ 怎么为Java程序添加背景图片代码
仅仅是给窗口添加背景的话是很简单的,添加上以下语句(自己去添加变量哈):
label = new JLabel(background); //background为ImageIcon
// 把标签的大小位置设置为图片刚好填充整个面板
label.setBounds(0, 0, this.getWidth(), this.getHeight());
//添加图片到frame的第二层(把背景图片添加到分层窗格的最底层作为背景)
this.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));
//把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明
jPanel=(JPanel)this.getContentPane();
//设置透明
jPanel.setOpaque(false);
然后你上面那个JPanel p也设置成透明就可以了
Ⅸ JAVA界面设计怎么插入背景图片
可以利用标签组件来设置。
Ⅹ Java怎么添加背景图片
//一个小例子
//注意:
//当前目录下要有一个p.jpg文件
//压缩这个文件使它的大小尽量小,最好只有几十KB
//否则无法显示背景图片
import javax.swing.*;
import java.awt.*;
public class Demo extends JFrame {
public static void main(String[] args) {
new Demo();
}
public Demo() {
//加载图片
pic=Toolkit.getDefaultToolkit().getImage("p.jpg");
MediaTracker t=new MediaTracker(this);
t.addImage(pic,1);
try
{
t.waitForID(1);
}
catch(Exception e)
{
}
setSize(400,400);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
//覆盖(重写)paint方法以在窗口中添加一张图片
public void paint(Graphics g) {
g.drawImage(pic,0,0,null);
}
Image pic;
}