java 把图片插入窗体,JAVA JFrame窗体添加背景图像的两种方法
首先還是要了解框架JFrame中的層次結構。JFrame中的層次分布及相對關系是:最底層是:JRootPane;第二層是:JlayerPane;最上層就是ContentPane,也正是我們常說的內容面板。所以一般我們拖放的控件就是在ContentPane層上。有了這些常識后我們就可以隨意設計背景了。在這里筆者提供兩種方法為一個frame設置一張背景圖片方法一:
原理:我們把圖片放置在第二層:JlayerPane容器上,然后讓最上層的:ContentPane透明,這樣就實現了背景的設置。(當然把圖片放置最低層,讓上面兩層透明也是可以的)? ? 代碼如下:package NewPackage;
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Demo2 {
public static void main(String[] args) {
JFrame f1=new JFrame("插入背景圖像");
f1.setBounds(400, 200, 500, 300);
f1.setVisible(true);
f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ImageIcon img=new ImageIcon("D:\\cat.png");
JLabel bg=new JLabel(img);
f1.getLayeredPane().add(bg, new Integer(Integer.MIN_VALUE));
bg.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
JPanel jp= (JPanel)f1.getContentPane();//強制類型轉換
//Container contain = f1.getContentPane();
//((JPanel) contain).setOpaque(false); //
jp.setOpaque(false);
jp.setLayout(new FlowLayout());
//contain.setLayout(new FlowLayout());
//contain.add(bg);
jp.add(bg);
}
}
方法二:
原理:我們直接在最上層容器內重寫paintComponent(Graphics?g)方法在容器中畫一張圖片。(這種方法很直觀,原理很簡單)。代碼如下:package NewPackage;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Demo3 extends JFrame{
//創建一個容器
JPanel jp;
//創建背景面板。
BackgroundPanel bgp;
//創建一個按鈕,用來證明我們的確是創建了背景圖片,而不是一張圖片。
JButton jb;
public static void main(String[] args){
new Demo3();
}
public Demo3(){
//不采用任何布局方式。
jp=(JPanel)this.getContentPane();
this.setLayout(null);
//在這里隨便找一張400*300的照片既可以看到測試結果。
ImageIcon img=new ImageIcon("D:\\cat.png");
bgp=new BackgroundPanel(img.getImage());
bgp.setBounds(0,0,img.getIconWidth(),img.getIconHeight());
//創建按鈕
jb=new JButton("測試按鈕");bgp.add(jb);jp.add(bgp);
this.setBounds(400, 200, 500, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
class BackgroundPanel extends JPanel{
Image im;
public BackgroundPanel(Image im){
this.im=im;
this.setOpaque(true);
}
//Draw the back ground.
public void paintComponent(Graphics g){
super.paintComponents(g);
g.drawImage(im,0,0,this.getWidth(),this.getHeight(),this);
}
}
程序運行效果如下:
總結
以上是生活随笔為你收集整理的java 把图片插入窗体,JAVA JFrame窗体添加背景图像的两种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 根可达算法的根_我的JVM(六):GC的
- 下一篇: html 缓存 js文件缓存吗,如何为c