日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 把图片插入窗体,JAVA JFrame窗体添加背景图像的两种方法

發(fā)布時(shí)間:2025/3/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 把图片插入窗体,JAVA JFrame窗体添加背景图像的两种方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

首先還是要了解框架JFrame中的層次結(jié)構(gòu)。JFrame中的層次分布及相對關(guān)系是:最底層是:JRootPane;第二層是:JlayerPane;最上層就是ContentPane,也正是我們常說的內(nèi)容面板。所以一般我們拖放的控件就是在ContentPane層上。有了這些常識后我們就可以隨意設(shè)計(jì)背景了。在這里筆者提供兩種方法為一個(gè)frame設(shè)置一張背景圖片方法一:

原理:我們把圖片放置在第二層:JlayerPane容器上,然后讓最上層的:ContentPane透明,這樣就實(shí)現(xiàn)了背景的設(shè)置。(當(dāng)然把圖片放置最低層,讓上面兩層透明也是可以的)? ? 代碼如下: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();//強(qiáng)制類型轉(zhuǎn)換

//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);

}

}

方法二:

原理:我們直接在最上層容器內(nèi)重寫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{

//創(chuàng)建一個(gè)容器

JPanel jp;

//創(chuàng)建背景面板。

BackgroundPanel bgp;

//創(chuàng)建一個(gè)按鈕,用來證明我們的確是創(chuàng)建了背景圖片,而不是一張圖片。

JButton jb;

public static void main(String[] args){

new Demo3();

}

public Demo3(){

//不采用任何布局方式。

jp=(JPanel)this.getContentPane();

this.setLayout(null);

//在這里隨便找一張400*300的照片既可以看到測試結(jié)果。

ImageIcon img=new ImageIcon("D:\\cat.png");

bgp=new BackgroundPanel(img.getImage());

bgp.setBounds(0,0,img.getIconWidth(),img.getIconHeight());

//創(chuàng)建按鈕

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);

}

}

程序運(yùn)行效果如下:

總結(jié)

以上是生活随笔為你收集整理的java 把图片插入窗体,JAVA JFrame窗体添加背景图像的两种方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。