关于JFrame中使用label添加背景且不会覆盖其他组件的方法

本文介绍如何在Swing的JFrame中设置背景图片,并确保其他组件正常显示而不被覆盖。通过调整布局并使用JLabel和JPanel实现透明效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近心血来潮想学一下老古董swing结果刚要做第一个就被难倒了,琢磨了好久,关于JFrame中使用label添加背景且不会覆盖其他组件的方法,不多说代码先放上在讲述下我自己的理解,因为也是刚接触不一定是正确的理解。。毕竟这个东西现在碰的人也挺少的。。。

public static void main(String[] args) {
		  JFrame frame=new JFrame();
		//要想改变接下里添加的组件的大小或者位置布局要为null
		  frame.setLayout(null);
	      ImageIcon icon=new ImageIcon("src/背景.jpg");
	      JLabel label1=new JLabel(icon);
	    //为了显示不同容器中组件的叠加,加一个label2
	      JLabel label2=new JLabel("密码");
    	  label2.setBackground(Color.RED);
    	  label2.setOpaque(true);
          label2.setBounds(30, 40, 100, 90);
	      label1.setBounds(0, 0, icon.getIconWidth(), icon.getIconHeight());
	    //将label放入frame的底层
	      frame.getLayeredPane().add(label1,new Integer(Integer.MIN_VALUE));
	    //设置顶层容器,可在上面添加组件
	      JPanel jpanel2=new JPanel();
	      jpanel2=(JPanel) frame.getContentPane();
	      //让其透明
	      jpanel2.setOpaque(false);
	      jpanel2.add(label2);
	      frame.setBounds(0, 0,375,667);
	      frame.setVisible(true);
	}

首先我们把需要的背景给label这里大小要自己设置好,然后就要使这个label放入JFrame的底层,getlayerpane()这个函数会返回一个容器对象,且可以对其有深度操作,然后我们只要在上面再放一个容器这个容器是我们放组件的容器,就是内容面板,设置为content pane,且让他完全透明,最后在该容器上添加组件就可以了。
还有一点就是有时候往往不能按我们想要的布局进行放置组件,所以我们一开始可以让布局置空,然后用setbound慢慢设置当然这需要一定的耐心
这是我的结果:在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值