java 中我创建了一个类继承了JPanel,重写了paint方法,用画笔g画了一张图片作为背景。
2个回答
2013-03-26
展开全部
你不要重写 paint 方法,你完全可以直接使用 swing 里面的组件,在 JPanel 中放入很多个组件,包括图,Label 等。
给你找了一个文章,可以解决你的问题:
http://stackoverflow.com/questions/9816403/how-to-set-jframe-or-jpanel-background-image-in-eclipse-helios
---------------------------------------------------------------
如果满意,请采纳。
给你找了一个文章,可以解决你的问题:
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 ,不要自己画图。
展开全部
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类型,可在创建的时候传入图片路径,当然如果你不是要做非矩形窗口的话,实在没必要这么做!这个方法的好处就在于你可以自定义你的窗口形状和透明度!
{
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的时候会被我已开始的那张图片给遮住。我想把图片设成透明的,或者放到最底层
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询