当前位置: 代码迷 >> Java相关 >> [求助]如何在JFrame中加入背景图片?
  详细解决方案

[求助]如何在JFrame中加入背景图片?

热度:209   发布时间:2006-08-22 17:30:24.0
[求助]如何在JFrame中加入背景图片?
如何在JFrame加入背景图片?哪位能指点一下吗??
搜索更多相关的解决方案: 背景图片  JFrame  

----------------解决方案--------------------------------------------------------

能力有限,只知道可以改变背景颜色!


----------------解决方案--------------------------------------------------------

背景我也知道的,可是我听说好像可在加入背景图片的, 不知道有哪位能帮小弟一下下咩?


----------------解决方案--------------------------------------------------------
看遍API也没有发现这个东东。
----------------解决方案--------------------------------------------------------

我在书上好看到了这种方法了!不过好象是要用数组来定义的,要不就是把它放到Panel中再放到JFrame中,那个命令好象是imageicon可能单词有拼错不过可以再搜索一下看看的!!


----------------解决方案--------------------------------------------------------

最好的办法就是把JPanel加入到JFrame中,在后在JPanel中设置背景图片
只有重写paintComponent()就可以了
在JFrame中直接改背景图片是不太可能的


----------------解决方案--------------------------------------------------------

按照版主的方法,小弟试了一下,果真可以实现。
程序如下:
//abc.gif放在与源文件相同的路径下
import java.awt.*;
import javax.swing.*;
class MyPanel extends JPanel
{
ImageIcon img;
JButton btnTest1,btnTest2;
MyPanel()
{
img=new ImageIcon("abc.gif");
btnTest1=new JButton("btnTest1");
btnTest2=new JButton("btnTest2");
this.setLayout(new FlowLayout());
add(btnTest1);
add(btnTest2);
}
public void paintComponent(Graphics g)
{
g.drawImage(img.getImage(),0,0,this.getWidth(),this.getHeight(),this);
}
}
class mainApp
{
public static void main(String[] args)
{
JFrame fm=new JFrame("BackGround Image Test");
MyPanel panel=new MyPanel();
fm.getContentPane().add(panel);
fm.show();
}
}


----------------解决方案--------------------------------------------------------

试着把上面的程序改为:
import java.awt.*;
import javax.swing.*;
class MyPanel extends JPanel
{
ImageIcon img;
JButton btnTest1,btnTest2;
MyPanel()
{
img=new ImageIcon("abc.gif");
btnTest1=new JButton("btnTest1");
btnTest2=new JButton("btnTest2");
this.setLayout(new FlowLayout());
add(btnTest1);
add(btnTest2);
}
public void paint(Graphics g) // Changed
{
g.drawImage(img.getImage(),0,0,this.getWidth(),this.getHeight(),this);
}
}
class mainApp
{
public static void main(String[] args)
{
JFrame fm=new JFrame("BackGround Image Test");
MyPanel panel=new MyPanel();
fm.getContentPane().add(panel);
fm.show();
}
}

比较一下,你会发现Swing中paint与paintComponent的区别(红色部分)。


----------------解决方案--------------------------------------------------------

受教了,偶试下!


----------------解决方案--------------------------------------------------------
最好是用paintComponent
----------------解决方案--------------------------------------------------------