swing背景图片的设置 zz
简单类方法如下:
package src;
import java.awt.*;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
public?? class?? MyPanel?? extends?? JPanel{??
private?? Image?? image?? =?? null;????
???? public?? MyPanel(Image image)?? {??
?????????????? this.image?? =?? image;??
???? }??
???? //固定背景图片,允许这个JPanel可以在图片上添加其他组件
???? protected?? void?? paintComponent(Graphics?? g)?? {??
??? g.drawImage(image,?? 0,?? 0,?? this.getWidth(),?? this.getHeight(),?? this);??
???? }??
}
测试JFrame
package src;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Test extends JFrame{
JPanel jpanel;
JLabel jlabel;
JButton jbutton;
Image image=new ImageIcon("image/a.jpg").getImage();
ImageIcon labIma=new ImageIcon("image/a.jpg");
Test(){??
?? this.setIconImage(image);
?? this.setTitle("hello");
?? init();
?? this.add(jpanel);
}
public void init(){//本方法里面有三种显示图片的方法,两个实现了在图片上添加按钮的功能
?? /*第一种方法 通过JLabel简单的设置图片
?? jpanel=new JPanel();
?? jlabel=new JLabel();
?? jlabel.setIcon(labIma);
?? jpanel.add(jlabel);
?? */
/*第二种方法 这是实现在JLabel添加图片同时在上面添加按钮功能,注意它里面的jpanel不用显示的添加到JFrame中,因此上面构造函数中的this.add(jpanel)要注释掉
jpanel = (JPanel) this.getContentPane(); //从JFrame 里面创建一个JPanel
?? jpanel.setOpaque(false); //JPanel 透明模式
?? jlabel = new JLabel(labIma); //创建个带背景图片的JLabel
?? this.getLayeredPane().add(jlabel, new Integer(Integer.MIN_VALUE));
?? jlabel.setBounds(0, 0, labIma.getIconWidth(), labIma.getIconHeight());
?? jpanel.setLayout(new FlowLayout());
?? JButton jb = new JButton("我是按钮");
?? jpanel.add(jb);
*/
/*第三种方法 通过重写JPanel中的paintComponent方法设置背景图片,然后在jpanel上添加组件
?? //通过背景图片设置图片 注意MyPanel是自己定义的一个类
?? jpanel=new MyPanel(image);
?? jbutton=new JButton();
?? jbutton.setText("haha");
?? jpanel.add(jbutton);
*/
}
public static void main(String args[])
{
Test t=new Test();
t.setSize(400,400);
t.setVisible(true);
}
}
?