好友
阅读权限25
听众
最后登录1970-1-1
|
我叫圡豆
发表于 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());
}
}
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|