swing中JFrame设置背景颜色和背景图片

JFrame窗口的组成部分:

  • 最底层是RootPane,
  • 上一层是LayeredPane,
  • 再上面就是ContenePane,
  • 最顶层就是GlassPane。
    最 顶层的GlassPane默认是透明的;
    ContentPane默认是一个JPanel,在JFrame上添加组件,往往是添加在ContentPane中的,
package test;

import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class BackgroundImage extends JFrame{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
    //添加背景图片
	public BackgroundImage(){
		//标题
		super("swing中JFrame设置背景图片");
		//大小
		setSize(500,400);
		setLocation(200,50);
		//图片的路径。(相对路径或绝对路径)
		String path="D:/javapro/t4/src/test/126725481.jpg";
		//背景图片
		ImageIcon background=new ImageIcon(path);
		//把背景图片放在在一个标签里面
		JLabel label=new JLabel(background);
		//标签的大小位置设置
		label.setBounds(0, 0, this.getWidth(),this.getHeight());
		//把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明,要强制转化
		JPanel imagePanel=(JPanel)this.getContentPane();
		imagePanel.setOpaque(false);
		//把背景图片添加到最底层作为背景
		this.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));
		JLabel label2=new JLabel("adhfasdf");
		JButton button=new JButton("按钮测试");
		JPanel panel=new JPanel();
		JPanel pane2=new JPanel();
		JButton button2=new JButton("按钮测试2");
		panel.setOpaque(false);   //设置panel为透明的,否则会挡住后面的背景图片
		pane2.setOpaque(false);   //设置panel为透明的,否则会挡住后面的背景图片
		label2.setForeground(Color.green);
		button.setBackground(Color.RED);
		panel.add(label2);
		pane2.add(button);
		panel.add(button2);
		this.add(panel,BorderLayout.CENTER);
		this.add(pane2, BorderLayout.SOUTH);
		setVisible(true);
	}
	public static void main(String[] args){
		new BackgroundImage();
	}
}

设置背景颜色的话使用:

frame.getContentPane().setBackground(Color.RED);

注意:在添加JPanel的时候要记得调用setOpaque()方法使panel透明,否则会挡住后面的背景。(尽量都把组件放在panel里,再把panel透明掉)。

  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值