最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

swing重繪按鈕為任意形狀圖案的方法

 更新時間:2017年12月22日 13:43:00   作者:_Thomas  
這篇文章主要為大家詳細介紹了swing重繪按鈕為任意形狀圖案,具有一定的參考價值,感興趣的小伙伴們可以參考一下

swing自帶的metalButton是非常丑的,不能滿足我們的實際需求,所以需要定制自己喜歡的按鈕,比如一個圖片按鈕等等。如下圖所示。

接著說明如何制作。

(1)找一些好看的按鈕圖片,但是按鈕可能在圖片內部,所以我們需要用美圖秀秀或者PS將按鈕摳出來。如下圖:

(2)將其保存為透明背景就可以了。

(3)然后寫一個我的按鈕類:

import javax.imageio.ImageIO; 
import javax.swing.*; 
import java.awt.*; 
import java.awt.image.BufferedImage; 
 
public class newButton extends JButton{ 
 ImageIcon img; 
 public newButton(String icon){ 
  super(); 
  this.img = new ImageIcon(Demo.class.getResource(icon)); 
  setBorderPainted(false); 
  setContentAreaFilled(false); 
  setOpaque(false); 
  setSize(img.getIconWidth(),img.getIconHeight()); 
  try{ 
   bi = ImageIO.read(Demo.class.getResource(icon)); 
  }catch(Exception e){ 
   JOptionPane.showMessageDialog(this,"可能是圖片文件不存在","ImageIO異常",JOptionPane.ERROR_MESSAGE); 
   System.exit(0); 
  } 
 } 
 @Override 
 public void paintComponent(Graphics g){ 
  if(this.getModel().isPressed()){ 
   g.drawImage(img.getImage(),1,1,this); 
  }else{ 
   g.drawImage(img.getImage(),0,0,this); 
  } 
  super.paintComponent(g); 
 } 
 BufferedImage bi ; 
 int rgb,alpha; 
 /** 
  * 設置按鈕點擊范圍僅在圖片的非透明區(qū)域。 
  */ 
 @Override 
 public boolean contains(int x,int y){ 
  try{ 
   rgb = bi.getRGB(x,y); 
   alpha = (rgb>>24)&0xFF; 
   if(alpha==0){ 
    return false; 
   }else{ 
    return true; 
   } 
  }catch(ArrayIndexOutOfBoundsException e){ 
   //當搜索到透明區(qū)域時,就getRGB拋出下表越界異常 
   return false; 
  } 
 } 
} 

上面的程序重寫了contains函數保證黨鼠標點擊區(qū)域限制在圖片的有效區(qū)域內。

(4)寫一個Demo類測試:

import javax.swing.*; 
import java.awt.*; 
import java.net.URL; 
 
public class Demo { 
 public Demo(){ 
  JFrame jf=new JFrame("任意形狀圖片按鈕測試"); 
  jf.setBounds(500,200,700,500); 
 
  myJPanel jp = new myJPanel(Demo.class.getResource("bg.jpg")); 
  jp.setLayout(null); 
 
  newButton jb1 = new newButton("bt1.png"); 
  jb1.setLocation(44,44); 
  jp.add(jb1); 
 
  jb1 = new newButton("snowFlower.png"); 
  jb1.setLocation(200,44); 
  jp.add(jb1); 
 
  jb1 = new newButton("bt2.png"); 
  jb1.setLocation(350,64); 
  jp.add(jb1); 
 
  jb1 = new newButton("bt3.png"); 
  jb1.setLocation(450,64); 
  jp.add(jb1); 
 
  jf.add(jp); 
  jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  jf.setVisible(true); 
 } 
 public static void main(String[] args){ 
  new Demo(); 
 } 
 private class myJPanel extends JPanel{ 
  ImageIcon bg; 
  public myJPanel(URL bg) { 
   this.setOpaque(false);//要設置為透明。 
   this.bg = new ImageIcon(bg); 
  } 
  //用于設置背景圖片 
  @Override 
  public void paintComponent(Graphics g){ 
   g.drawImage(bg.getImage(),0,0,this.getWidth(),this.getHeight(),this); 
   super.paintComponent(g); 
  } 
 } 
} 

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

相關文章

  • JAVA Swing實現窗口添加課程信息過程解析

    JAVA Swing實現窗口添加課程信息過程解析

    這篇文章主要介紹了JAVA Swing實現窗口添加課程信息過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • Mybatis?如何開啟控制臺打印sql語句

    Mybatis?如何開啟控制臺打印sql語句

    這篇文章主要介紹了Mybatis?如何開啟控制臺打印sql語句問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Java中map內部存儲方式解析

    Java中map內部存儲方式解析

    這篇文章主要介紹了Java中map內部存儲方式解析的相關內容,涉及其實現方式,以及對存儲方式作了簡單的比較,具有一定參考價值,需要的朋友可了解下。
    2017-10-10
  • java實現對服務器的自動巡檢郵件通知

    java實現對服務器的自動巡檢郵件通知

    這篇文章主要為大家詳細介紹了java實現對服務器的自動巡檢郵件通知,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 基于java查找并打印輸出字符串中字符出現次數

    基于java查找并打印輸出字符串中字符出現次數

    這篇文章主要介紹了基于java查找并打印輸出字符串中字符出現次數,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • spring boot教程之全局處理異常封裝

    spring boot教程之全局處理異常封裝

    這篇文章主要給大家介紹了關于spring boot教程之全局處理異常封裝的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用spring boot具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09
  • 詳細談談Spring事務是如何管理的

    詳細談談Spring事務是如何管理的

    在使用傳統(tǒng)的事務編程策略時,程序代碼必然和具體的事務操作代碼耦合,而使用Spring事務管理策略恰好可以避免這種尷尬,Spring的事務管理提供了兩種方式:編程式事務管理和聲明式事務管理,這篇文章主要給大家介紹了關于Spring事務是如何管理的相關資料,需要的朋友可以參考下
    2021-09-09
  • JavaSE中compare、compareTo的區(qū)別

    JavaSE中compare、compareTo的區(qū)別

    本文主要介紹了JavaSE中compare、compareTo的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • Java實現簡單的抽牌游戲

    Java實現簡單的抽牌游戲

    這篇文章主要為大家詳細介紹了Java實現簡單的抽牌游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • 詳解關于springboot-actuator監(jiān)控的401無權限訪問

    詳解關于springboot-actuator監(jiān)控的401無權限訪問

    本篇文章主要介紹了詳解關于springboot-actuator監(jiān)控的401無權限訪問,非常具有實用價值,有興趣的可以了解一下
    2017-09-09

最新評論

建湖县| 五家渠市| 阿巴嘎旗| 灌阳县| 岳阳市| 万宁市| 莲花县| 芦溪县| 勐海县| 德保县| 宣城市| 勐海县| 剑阁县| 兴城市| 五峰| 凉山| 鄂州市| 乌拉特后旗| 湟中县| 全南县| 宜兰市| 丰城市| 思茅市| 龙里县| 保定市| 信丰县| 阳东县| 太仓市| 宣化县| 清原| 平度市| 隆昌县| 永顺县| 肥西县| 临泉县| 南召县| 武胜县| 精河县| 定远县| 天气| 沈阳市|