吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3031|回复: 3
收起左侧

[Java 转载] 【分享】JFrame添加背景图片

[复制链接]
我叫圡豆 发表于 2016-11-14 19:12
今天在网上找了好久才找到一个java的JFrame添加背景图片的代码,拿来分享一下,并去掉了原来代码中一些不必要的东西.亲测可用,可以直接粘贴复制~

方法一(比较简单):
import javax.swing.ImageIcon;
import javax.swing.JPanel;
/**
* 直接在最上层容器内重写paintComponent(Graphics g)方法在容器中画一张图片。(这种方法很直观,原理很简单)
* @author 小圡豆
*
*/
public class ImagePanel extends JPanel{
   
    private ImageIcon background;
   
    public ImagePanel(String str){
        this.background=new ImageIcon(str);
    }

    public  void paintComponent(Graphics g){
        super.paintComponent(g);  
        ImageIcon img =background;  
        img.paintIcon(this, g, 0, 0);  
    }
}


方法二:
在java编程JFrame中的层次结构。JFrame中的层次分布及相对关系是:最底层JRootPane;第二层是:JlayerPane;最上层就是ContentPane,也正是我们常说的内容面ContentPane层上。

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
/**
* 把图片放置在第二层:JlayerPane容器上,然后让最上层的:ContentPane透明,这样就实现了背景的设置。
*(当然把图片放置最低层,让上面两层透明也是可以的)
* @author 小圡豆
*
*/
public class ImageFrame {
   
    private JFrame jframe;
    private ImageIcon background;
    private JPanel imagePanel;
   
    public ImageFrame(JFrame jframe,String str){
        this.jframe=jframe;
        this.background = new ImageIcon(str);
    }
   
    public void Background() {
        // 把背景图片显示在一个标签里面
          JLabel label = new JLabel(background);
          // 把标签的大小位置设置为图片刚好填充整个面板
          label.setBounds(0, 0, background.getIconWidth(),background.getIconHeight());
          // 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明
          imagePanel = (JPanel)jframe.getContentPane();
          imagePanel.setOpaque(false);

          jframe.setUndecorated(false);  
          jframe.getGraphicsConfiguration().getDevice().setFullScreenWindow(jframe);  
          jframe.getLayeredPane().setLayout(null);
          // 把背景图片添加到分层窗格的最底层作为背景
          jframe.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
          jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          jframe.setSize(background.getIconWidth(), background.getIconHeight());
         }

}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

GreyChroma 发表于 2016-11-14 19:24
两个方法,第二个复杂点,技术贴,收藏了
五行天 发表于 2016-11-14 19:32
dxdeng 发表于 2016-11-14 19:56
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 11:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表