文档库 最新最全的文档下载
当前位置:文档库 › 给JFrame设置背景图片ZZBackGround

给JFrame设置背景图片ZZBackGround

概要:

JFrame中没有直接设置背景图片的方法,所以我们就需要自己动手来给他加个背景图片。效果展示:

核心代码:

[Java]

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37 package com.zhenzhigu.background;

import java.awt.Image;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

public class ZZBackGroundCore {

public static void main(String[] args) {

//------------------------ 1. 基本窗体设置 --------------------------

JFrame f = new JFrame();

f.setTitle("真知谷科技:https://www.wendangku.net/doc/546984070.html,");

f.setSize(600, 400);

f.setVisible(true);

//------------------------ 2. 设置ContentPane透明 -------------------- //把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明

JPanel imagePanel = (JPanel) f.getContentPane();

imagePanel.setOpaque(false);

//------------------------ 3. 图片框/背景图 -------------------------

JLabel label = new JLabel();

ImageIcon icon = new ImageIcon("c:/img.jpg");

//------------------------ 4. 常规背景:图片原始大小 ------------------

label.setIcon(icon);

label.setBounds(0, 0, icon.getIconWidth(),icon.getIconHeight());

//------------------------ 5. 拉伸背景:适应窗体大小 ------------------

int w = f.getLayeredPane().getWidth();

int h = f.getLayeredPane().getHeight();

Image img = icon.getImage().getScaledInstance(w, h, Image.SCALE_FAST);

label.setIcon(new ImageIcon(img));

label.setBounds(0, 0, w,h);

38

39

40

41

42

//------- 6. 把背景图片添加到分层窗格的最底层作为背景 ----------------

f.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));

}

}

1程序分析

第一部分:构建了一个简单的窗体,我们接下来将会为它设置背景图片。

第二部分:设置窗体中的ContenPane层透明,因为我们要把背景图片放到它下面的图层里。

第三部分:准备好背景图和图片框,接下来就是大小的计算了。

第四部分:常规模式:把图像设置到JLabel中,设置JLabel大小和图像大小相同。

第五部分:拉伸模式:获取窗体的宽度和高度,将图像进行相应缩放然后设置到JLabel中。

第六部分:将设置好的JLabel添加到窗体的LayeredPane中,放到最底层。

第四部分和第五部分是两种不同的背景模式,使用其中一种即可。

2重点方法说明

1.getScaledInstance(第35行):

可以对图像进行缩放,共有3个参数,分别是宽度、高度和缩放模式,通过此方法可以得到一个缩放后的新图像,缩放模式有如下几种可供选择:Image.SCALE_SMOOTH //平滑优先

Image.SCALE_FAST//速度优先

Image.SCALE_AREA_AVERAGING //区域均值

Image.SCALE_REPLICATE //像素复制型缩放

Image.SCALE_DEFAULT //默认缩放模式

3背景随窗体大小改变

以上代码可以设置一个背景,但你会发现,窗体大小变化时背景不会一起变,所以我们还需要一些其他的处理,而且一个窗体多次设置背景时又该如何处理呢?这些功能的具体实现,这里就不说了,我已经写好了一个类,专门用来为JFrame设置背景图片,用法十分简单。

4ZZBackGround

选中项目,右键→BuildPath→ConfigureBuildPath→Libraries→AddExternalJars,选择下载的ZZBackGround.jar文件,这样就将jar包引入到你的项目中了。

引入后就可以在程序中调用ZZBackGround.showTest();就可以观看效果。

调用ZZBackGround.showTest();会自动生成一个窗体,背景是填充的,也会随着窗体大小的改变而改变,下面来看一下如何设置背景图片:

假如你有一个JFrame窗体叫fre,有一张图片路径为C:/abc/3.jpg,然后:

ZZBackGround.setBackBround(fre, "C:/abc/3.jpg", ZZBackGround.FILL);

这样就把3.jpg设置为fre的背景了。

如果想让背景是原图的大小,就这样写:

ZZBackGround.setBackBround(fre, "C:/abc/3.jpg", ZZBackGround.NORMAL);

5示例程序

[Java]

1 2 3 4 5 6 7 8 9

10

11

12 public static void main(String[] args) {

JFrame f = new JFrame();

f.setSize(600, 400);

f.setTitle("真知谷科技:https://www.wendangku.net/doc/546984070.html,");

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.setLocationRelativeTo(null);

f.setLayout(new FlowLayout());

f.add(new JButton("按钮" + i));

f.setVisible(true);

ZZBackGround.setBackBround(fre, "c:/abc/3.jpg", ZZBackGround.FILL); }

6原文链接、下载地址

https://www.wendangku.net/doc/546984070.html,/read.php?tid=43&fid=6&page=1

相关文档
相关文档 最新文档