急!!怎么样在jpanel中添加背景图片,而又不会把在jpanel中的按钮覆盖?就是怎么样把图片相设制在最低层 15

我在jpanel中有按钮,按钮有图片,当我添加背景图片时总是会覆盖了按钮的图片?为什么?... 我在jpanel中有按钮,按钮有图片,当我添加背景图片时总是会覆盖了按钮的图片?为什么? 展开
 我来答
匿名用户
2010-06-02
展开全部
重写JPanel的paintComponent方法

简单类方法如下:

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);
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式