我叫圡豆 发表于 2016-11-14 19:12

【分享】JFrame添加背景图片

今天在网上找了好久才找到一个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);
    }

    publicvoid 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

学习了这
页: [1]
查看完整版本: 【分享】JFrame添加背景图片