能力有限,只知道可以改变背景颜色!
按照版主的方法,小弟试了一下,果真可以实现。
程序如下:
//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的区别(红色部分)。