欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java創(chuàng)建以任意圖片為背景的窗口

 更新時間:2017年12月22日 12:11:39   作者:_Thomas  
這篇文章主要為大家詳細介紹了java創(chuàng)建以任意圖片為背景的窗口,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

并且可以設(shè)置窗體背景圖片的透明度

下面說明如何做到上圖的效果:

(1)首先你得需要一張好看的圖片,比如羊皮紙。但是這個下載的圖片是方方正正的矩形,羊皮紙的形狀在圖片的內(nèi)部,所以我們用美圖秀秀或者PS中的摳圖功能將羊皮紙摳出來,如下:


(2)將圖片保存為透明背景即可。
(3)接著寫一個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); 
    } 
  } 
} 

上面的程序主要代碼在于:設(shè)置JFrame為透明,JFrame去掉邊框,設(shè)置內(nèi)容面板為透明,然后將圖片畫到內(nèi)容面板上。

(4)寫一個測試類Test:

import javax.swing.*; 
import java.awt.*; 
public class Test { 
  public static void main(String[] args) { 
    /** 
     * 設(shè)置背景圖和背景圖的透明度,0為全透明,1.0f為不透明。 
     */ 
    myJFrame f = new myJFrame("ab.png",0.7f); 
 
    f.setLayout(null); 
    Font font = new Font("宋體",Font.PLAIN,30); 
    JLabel user = new JLabel("用戶名"); 
    user.setFont(font); 
    user.setBounds(100,150,100,30); 
    JTextField userInput = new JTextField(); 
    userInput.setFont(font); 
    userInput.setBounds(200,145,250,40); 
    JLabel ps = new JLabel("密碼"); 
    ps.setFont(font); 
    ps.setBounds(110,200,90,30); 
    JTextField psInput = new JTextField(); 
    psInput.setFont(font); 
    psInput.setBounds(200,195,250,40); 
 
    f.add(user); 
    f.add(userInput); 
    f.add(ps); 
    f.add(psInput); 
    f.setLocation(300,100); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.setVisible(true); 
  } 
} 

(5)由于去掉了邊框,所以窗體不能拖動和拉伸,拖動和拉伸功能的實現(xiàn)見這篇文章swing實現(xiàn)窗體拖拽和拉伸

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring定時任務(wù)實現(xiàn)與配置(二)

    Spring定時任務(wù)實現(xiàn)與配置(二)

    這篇文章主要為大家詳細介紹了Spring定時任務(wù)的實現(xiàn)與配置第二篇,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Java Resource路徑整理總結(jié)

    Java Resource路徑整理總結(jié)

    這篇文章主要介紹了 Java Resource路徑整理總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • CentOS?7.9服務(wù)器Java部署環(huán)境配置的過程詳解

    CentOS?7.9服務(wù)器Java部署環(huán)境配置的過程詳解

    這篇文章主要介紹了CentOS?7.9服務(wù)器Java部署環(huán)境配置,主要包括ftp服務(wù)器搭建過程、jdk安裝方法以及mysql安裝過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Spring MVC---數(shù)據(jù)綁定和表單標簽詳解

    Spring MVC---數(shù)據(jù)綁定和表單標簽詳解

    本篇文章主要介紹了Spring MVC---數(shù)據(jù)綁定和表單標簽詳解,具有一定的參考價值,有興趣的可以了解一下。
    2017-01-01
  • Android?Java判斷密碼強度方法實例(強度顯示)

    Android?Java判斷密碼強度方法實例(強度顯示)

    在現(xiàn)代社會中,密碼是確保我們個人信息和賬戶安全的重要手段之一,為了提高密碼的安全性,我們可以使用正則表達式來判斷密碼的強度,這篇文章主要給大家介紹了關(guān)于Android?Java判斷密碼強度(強度顯示)的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • 如何使用JaCoCo分析java單元測試覆蓋率

    如何使用JaCoCo分析java單元測試覆蓋率

    在做單元測試時,代碼覆蓋率常常被拿來作為衡量測試好壞的指標,甚至,用代碼覆蓋率來考核測試任務(wù)完成情況,比如,代碼覆蓋率必須達到80%或 90%。于是乎,測試人員費盡心思設(shè)計案例覆蓋代碼。下面我們來學習一下吧
    2019-06-06
  • 計算一個Java對象占用字節(jié)數(shù)的方法

    計算一個Java對象占用字節(jié)數(shù)的方法

    這篇文章主要介紹了計算一個Java對象占用字節(jié)數(shù)的方法,較為詳細的分析了Java中各類對象所占用的字節(jié)數(shù),需要的朋友可以參考下
    2015-01-01
  • MyBatis Generator配置入門

    MyBatis Generator配置入門

    本文主要介紹了MyBatis Generator配置入門,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • Java編程實現(xiàn)遞增排序鏈表的合并

    Java編程實現(xiàn)遞增排序鏈表的合并

    這篇文章主要介紹了Java編程實現(xiàn)遞增排序鏈表的合并,兩種方法,代碼分享給大家,供需要的朋友參考。
    2017-10-10
  • Vue.Js及Java實現(xiàn)文件分片上傳代碼實例

    Vue.Js及Java實現(xiàn)文件分片上傳代碼實例

    這篇文章主要介紹了Vue.Js及Java實現(xiàn)文件分片上傳代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06

最新評論