java 中我创建了一个类继承了JPanel,重写了paint方法,用画笔g画了一张图片作为背景。

我继续在jpanel中添加jlabel,结果被图片遮住了,求问怎么解决... 我继续在jpanel中添加jlabel,结果被图片遮住了,求问怎么解决 展开
 我来答
匿名用户
2013-03-26
展开全部
你不要重写 paint 方法,你完全可以直接使用 swing 里面的组件,在 JPanel 中放入很多个组件,包括图,Label 等。

给你找了一个文章,可以解决你的问题:

http://stackoverflow.com/questions/9816403/how-to-set-jframe-or-jpanel-background-image-in-eclipse-helios

---------------------------------------------------------------

如果满意,请采纳。
追问
没看出解决方法哎,我要的是把Label放在image上层
追答
其实,你思想没有转变过来,
虽然你在上面的例子里面看到的是一个图片,但是你有没注意到它的图片是继承 Jpanel 的类的,你完全可以将 ImagePanel 当成 JPanel 来用,并且,ImagePanel 你一加到 JFrame 的时候就已经是有背景图的了。

实际上,你可以 用 ImagePanel 去 Add 你说的 JLabel ,就可以达到你要的效果了。

所以,我为什么上面叫你不要自己重写 paint 方法就是这个原因,你直接用组件去 Add ,不要自己画图。
edyang123
2013-03-26 · 超过27用户采纳过TA的回答
知道答主
回答量:134
采纳率:0%
帮助的人:63.2万
展开全部
public void paintComponent(Graphics g)
{
super.paintComponent(g);
final Graphics2D gg = (Graphics2D) g;
if(img!=null)
{
gg.drawImage(img.getImage(),0,0,img.getIconWidth(),mainbg_img.getIconHeight(),this);
}
}

重写paintComponent() 其中的img为ImageIcon类型,可在创建的时候传入图片路径,当然如果你不是要做非矩形窗口的话,实在没必要这么做!这个方法的好处就在于你可以自定义你的窗口形状和透明度!
追问
不是,我主要是在已经给jpanel画了一张背景图片,然后我要继续添加别的组件如JLabel的时候会被我已开始的那张图片给遮住。我想把图片设成透明的,或者放到最底层
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式