java backgroundpanel_java – JFrame中的背景图像

这个问题已被问到很多,但到处都是答案不足.我可以通过扩展JPanel和覆盖paintComponent来获得一个JFrame来显示背景图像,如下所示:

class BackgroundPanel extends JPanel {

private ImageIcon imageIcon;

public BackgroundPanel() {

this.imageIcon = Icons.getIcon("foo");

}

@Override

protected void paintComponent(Graphics g) {

super.paintComponent(g);

g.drawImage(imageIcon.getImage(), 0,0,imageIcon.getIconWidth(),imageIcon.getIconHeight(),this);

}

}

但是现在,如何在该背景之上添加组件?

我走的时候

JFrame w = new JFrame() ;

Container cp = w.getContentPane();

cp.setLayout(null);

BackgroundPanel bg = new BackgroundPanel();

cp.add(bg);

JPanel b = new JPanel();

b.setSize(new Dimension(30, 40));

b.setBackground(Color.red);

cp.add(b);

w.pack()

w.setVisible(true)

它显示了小红色方块(或任何其他组件)而不是背景,但是当我删除cp.setLayout(null);时,背景显示但不显示我的其他组件.我猜这与paintComponent没有被null LayoutManager调用有关,但我对LayoutManagers的工作原理并不熟悉(这是一个大学的项目,并且该任务明确表示不使用LayoutManager) .

当我制作图像时,背景必须显示为null(因此,透明(??))红色方块显示,因此可能是背景实际上高于我的其他组件.

有没有人有任何想法?

谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值