swing自帶的窗體是不能夠滿足我們的應(yīng)用需求的,所以需要制作任意圖片和形狀的JFrame框體,比如下圖:

并且可以設(shè)置窗體背景圖片的透明度
下面說明如何做到上圖的效果:
(1)首先你得需要一張好看的圖片,比如羊皮紙。但是這個(gè)下載的圖片是方方正正的矩形,羊皮紙的形狀在圖片的內(nèi)部,所以我們用美圖秀秀或者PS中的摳圖功能將羊皮紙摳出來,如下:
(2)將圖片保存為透明背景即可。
(3)接著寫一個(gè)myJFrame繼承JFrame,代碼如下:
import com.sun.awt.AWTUtilities;
import javax.swing.*;
import java.awt.*;
public class myJFrame extends JFrame{
private float alpha;
public myJFrame(String bgPath,float alpha){
super();
myContentPane rp = new myContentPane(bgPath);
rp.setOpaque(false);//設(shè)置內(nèi)容面板為透明
this.setContentPane(rp);
this.setUndecorated(true);
this.setSize(rp.img.getIconWidth(),rp.img.getIconHeight());
AWTUtilities.setWindowOpaque(this, false);//設(shè)置為JFrame為透明
this.alpha = alpha;
}
private class myContentPane extends JPanel{
public ImageIcon img;
public myContentPane(String bgPath) {
super();
img = new ImageIcon(Test.class.getResource(bgPath));
}
@Override
protected void paintComponent(Graphics g) {
AlphaComposite ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha);
Composite old = ((Graphics2D) g).getComposite();
((Graphics2D) g).setComposite(ac);
if(img!=null){
g.drawImage(img.getImage(), 0, 0, getWidth(), getHeight(), this);
}
((Graphics2D) g).setComposite(old);
super.paintComponent(g);
}
}
}
網(wǎng)頁名稱:java創(chuàng)建以任意圖片為背景的窗口-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://chinadenli.net/article10/eocgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、云服務(wù)器、標(biāo)簽優(yōu)化、網(wǎng)站設(shè)計(jì)、動(dòng)態(tài)網(wǎng)站、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容