1.引言

在了解了JFrame面板的相关知识后,我们可以选择在RootPane根面板或LayeredPane面板中设置背景图案。

2.方法

对于大小固定的窗口背景设置如下:

//导入图案

ImageIcon img = new ImageIcon("image url");

// 图片缩放为窗口大小

Image image = img.getImage().getScaledInstance(frame.getWidth(), frame.getHeight(), Image.SCALE_FAST);

//将缩放好的图片实例化

ImageIcon newimg = new ImageIcon(image);

//将图案放入标签(不能直接将image放入标签)

JLabel imgLabel = new JLabel();

imgLabel.setIcon(newimg);

//设置标签位置和大小(覆盖面板)

imgLabel.setBounds(0, 0,  frame.getWidth(), frame.getHeight());

//将标签添加到Layered面板或RootPane面板( LayeredPane也有若干层,这里放在最底层)

frame.getLayeredPane().add( imgLabel, new Integer(Integer.MIN_VALUE));

//将ContentPane设置为透明

JPanel content=(JPanel) frame.getContentPane();

content.setOpaque(false);

3.实例

import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class SetBack1 {
    JFrame frame = new JFrame("picture test");
    JLabel label=new JLabel();  
    public SetBack1(){
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(500, 400);    
        //导入图片
        ImageIcon img = new ImageIcon("D:\\7.jpg");
        // 图片缩放为适合Frame大小
        Image image = img.getImage().getScaledInstance(frame.getWidth(), frame.getHeight(), Image.SCALE_FAST);
        //将缩放好的图片实例化
        ImageIcon newimg = new ImageIcon(image);
        //在标签中添加图片
        label.setIcon(newimg);
        //设置标签大小为全屏
        label.setBounds(0, 0, frame.getWidth(), frame.getHeight());        
        //LayeredPane也是分层的,这里将JLabel放置在了LayeredPane最底层
        frame.getLayeredPane().add( label, new Integer(Integer.MIN_VALUE));
        //将ContentPane透明化
        JPanel cp= (JPanel)  frame.getContentPane();            
        cp.setOpaque(false);
        frame.setVisible(true);
    }   
    public static void main(String[] args) {
        new SetBack1();
    }
}

效果如下:

JFrame背景的更多相关文章

  1. 设置JFrame背景图片

    这里我就放上改写的代码吧,不做多的解释,推荐一个好的博文 https://blog.csdn.net/jdsjlzx/article/details/16831815 public void ini_ ...

  2. Swing编程---添加背景图片的方法

    总结:看下我的运行图片.这个图片很重要.很能说明问题.它的frame就是一个小图片.就是背景.么手贱把它放大. 在微软的操作系统上,你放多大,窗口就有多大,你看到背景就成了小图片,就会误以为不是背景. ...

  3. Swing编程把图片放入frame里。先不作为背景图片

    总结: 总之遵循一条,所有的组件都不是直接放入frame里的.还要label的重要性,panel.面板类 虽然我还是不会做,但总算出了个图片出来~~~~~~~~~~~~~ package com.kk ...

  4. swing实现QQ登录界面1.0( 实现了同一张图片只加载一次)、(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件)

    swing实现QQ登录界面1.0( 实现了同一张图片只加载一次).(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件) 代码思路分析: 1.(同一张图片仅仅需要加载一次就够了,下 ...

  5. JPanel设置图片

    package com.gr.db; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class We ...

  6. Java入门:使用Java API

    什么是Java类库 在编写程序的时候,通常有很多功能是通用的,或者是很基础的,可以用这些功能来组成更发杂的功能代码.比如文件操作,不同程序对文件的操作基本都是一样的,打开文件,关闭文件,读取文件里面的 ...

  7. 用Java开发局域网内文件传输软件遇到的一些问题

    项目地址:https://github.com/b84955189/FileTransfer 由于巨懒的我不太喜欢使用U盘操作文件,特此开发一个简易的文件传输程序. 目前仅限局域网内传输,后期会尝试写 ...

  8. JFrame的层次结构以及背景颜色设置问题

    JFrame的层次结构: JFrame:窗体,也就是窗口的框架.默认为不可见.不透明的(可以使用isVisible和isOpaque来验证).创建窗口时,最后一步需要调用setVisible(true ...

  9. 关于Swing中JFrame等顶级容器的层次还有设置背景的方式

    资料来自:http://blog.csdn.net/qq_32006373/article/details/49659129 http://yuncode.net/code/c_5196327caac ...

随机推荐

  1. CUBRID学习笔记 28 执行sql脚本文件

    一下命令在csql下执行. insert_commands.sql为sql脚本文件 ;CL ;READ insert_commands.sql ;RU 第一行的cl 清空命令缓存,等同clear第二行 ...

  2. AngularJS Protractor

    官网地址:http://www.protractortest.org/ 1. 预备环境 protractor 是一个 Node.js 程序,为了运行 protractor ,你首先需要 Node 环境 ...

  3. C运行时的数据结构

    本文描述一下:C运行时的数据结构,相关的段,压栈等 unix默认的编译器会将编译生成的文件默认命名为a.out 目标文件和可执行文件可以有几种不同的格式,所有这些不同格式具有一个共同的概念,那就是段. ...

  4. 对象导论 Thinking in Java 第一章

    1.1 抽象过程 1.人们能够解决问题的复杂性直接取决于抽象的类型和质量. 1.2 每个对象都有一个接口 1.3 每个对象都提供服务 1.4 被隐藏的具体实现 1.程序猿分为:类创建者 和 客户端程序 ...

  5. spring校验和文件上传

    spring校验可以分为 vlidator和jsr303 vlidator实例 首先实现validatorjiekou 通过这个类转化为验证类,然后进行验证 在handler里通过创建进行验证 通过j ...

  6. [转载] 新兵训练营系列课程——平台服务部署及Web框架

    原文: http://weibo.com/p/1001643875679132642345 大纲 微博平台主要负责微博基础功能.接下来将会介绍 平台的作用,以及服务提供的形式 平台Web服务的部署 平 ...

  7. 【Todo】Java要学的一些比较好的框架和系统

    commons-pool apache的通用线程池 可以看看这篇文章:<使用common-pool实现的一个简单的线程池> Jmeter 性能测试 Squid Link

  8. 在Maven中设置Nexus私有服务为中央工厂(repository)

    原文:http://blog.csdn.net/mexican_jacky/article/details/50275695 nexus中的仓库列表 第一种方式: <repositories&g ...

  9. 转:Jeff Atwood倾情推荐——程序员必读之书

    Jeff Atwood倾情推荐——程序员必读之书 英文版:<Code Complete 2>中文版:<代码大全(第二版)>作者:Steve McConnell译者:金戈  汤凌 ...

  10. 怎么进入BAT的研发部门?

    怎么进入BAT的研发部门? ======================================剑指offer+leetcode+geeksforgeeks+编程之美+算法导论====秒杀BA ...