Swing과 함께 제공되는 MetalButton은 매우 추악하고 실제 요구를 충족시킬 수 없으므로 아래 그림과 같이 사진 버튼 등과 같은 좋아하는 버튼을 사용자 정의해야합니다.
그런 다음 어떻게 만드는 방법을 설명하십시오.
(1) 좋은 버튼 사진을 찾으십시오. 그러나 버튼이 그림 안에있을 수 있으므로 버튼을 선택하려면 meitu xiuxiu 또는 ps를 사용해야합니다. 아래 그림과 같이 :
(2) 투명한 배경으로 저장하십시오.
(3) 그런 다음 내 버튼 클래스를 작성하십시오.
import javax.imageio.imageio; javax.swing을 가져옵니다.*; java.awt.*; java.awt.image.bufferedimage import; 공개 클래스 Newbutton은 Jbutton {imageicon img; 공개 NewButton (String Icon) {super (); this.img = new ImageIcon (demo.class.getResource (아이콘)); SetBorderPainted (False); SetContentAreafliled (false); setopaque (false); setsize (img.geticonwidth (), img.geticonheight ()); try {bi = imageio.read (demo.class.getResource (아이콘)); } catch (예외 e) {joptionpane.showmessagedialog ( ","이미지 파일이 존재하지 않을 수도 있습니다 ","imageio exception ", joptionpane.error_message); System.exit (0); }} @override public void paintcomponent (그래픽 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, 알파; /*** 사진의 비 투기 영역에서만 버튼 클릭 범위를 설정합니다. */ @override public boolean은 (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) {// 투명 영역이 검색되면 GetRGB는 다음 테이블을 경계에서 제외합니다. }}} 위의 프로그램은 포함 기능을 다시 작성하여 파티 마우스 클릭 영역이 그림의 유효한 영역으로 제한되도록합니다.
(4) 데모 클래스 테스트 작성 :
javax.swing을 가져옵니다.*; java.awt.*; import java.net.url; public class demo {public demo () {jframe jf = new Jframe ( "임의의 모양 사진 버튼 테스트"); JF. 세트 바운드 (500,200,700,500); myjpanel jp = new myjpanel (demo.class.getResource ( "bg.jpg")); jp.setlayout (null); Newbutton JB1 = 새로운 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. 세트로 위치 (350,64); jp.add (jb1); JB1 = 새로운 NewButton ( "BT3.png"); JB1.SetLocation (450,64); jp.add (jp); JF.SetDefaultCloseOperation (jframe.exit_on_close); jf.set -Visible (true); } public static void main (String [] args) {new demo (); } private class myjpanel 확장 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); }}}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.