Metalbutton ที่ Swing มาพร้อมกับน่าเกลียดมากและไม่สามารถตอบสนองความต้องการที่แท้จริงของเราได้ดังนั้นเราจึงจำเป็นต้องปรับแต่งปุ่มโปรดของเราเช่นปุ่มรูปภาพ ฯลฯ ดังที่แสดงในรูปด้านล่าง
จากนั้นอธิบายวิธีการทำ
(1) ค้นหารูปภาพปุ่มที่ดี แต่ปุ่มอาจอยู่ในภาพดังนั้นเราจึงต้องใช้ Meitu Xiuxiu หรือ PS เพื่อเลือกปุ่ม ดังที่แสดงในรูปด้านล่าง:
(2) เพียงบันทึกเป็นพื้นหลังโปร่งใส
(3) จากนั้นเขียนคลาสปุ่มของฉัน:
นำเข้า Javax.imageio.imageio; นำเข้า Javax.swing.*; นำเข้า Java.awt.*; นำเข้า java.awt.image.bufferedimage; Public Class Newbutton ขยาย JButton {Imageicon IMG; Public Newbutton (ไอคอนสตริง) {super (); this.img = ใหม่ imageicon (demo.class.getResource (ไอคอน)); SetBorderPainted (เท็จ); SetContentareafilled (เท็จ); Setopaque (เท็จ); setsize (img.geticonwidth (), img.geticonheight ()); ลอง {bi = imageio.read (demo.class.getResource (ไอคอน)); } catch (Exception e) {joptionpane.showMessageDialog (นี่อาจเป็น "ไฟล์ภาพอาจไม่มีอยู่", "Imageio Exception", joptionpane.error_message); System.Exit (0); }} @Override โมฆะสาธารณะ PaintComponent (กราฟิก g) {ถ้า (this.getModel (). ispressed ()) {g.drawimage (img.getImage (), 1,1, สิ่งนี้); } else {G.DrawImage (img.getImage (), 0,0, สิ่งนี้); } super.paintComponent (g); } bufferedImage bi; int rgb, alpha; /*** ตั้งค่าช่วงการคลิกปุ่มเฉพาะในพื้นที่ที่ไม่โปร่งใสของรูปภาพ */ @Override บูลีนสาธารณะประกอบด้วย (int x, int y) {ลอง {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.*; นำเข้า java.net.url; การสาธิตคลาสสาธารณะ {การสาธิตสาธารณะ () {jframe jf = new JFrame ("การทดสอบปุ่มรูปภาพรูปร่างโดยพลการ"); JF.SetBounds (500,200,700,500); MyJPanel JP = ใหม่ myjpanel (demo.class.getResource ("bg.jpg")); JP.SetLayout (NULL); NewButton JB1 = New NewButton ("BT1.PNG"); JB1.SetLocation (44,44); JP.Add (JB1); jb1 = newbutton ใหม่ ("Snowflower.png"); JB1.SetLocation (200,44); JP.Add (JB1); jb1 = newbutton ใหม่ ("bt2.png"); JB1.SetLocation (350,64); JP.Add (JB1); jb1 = newbutton ใหม่ ("bt3.png"); JB1.SetLocation (450,64); JP.Add (JP); jf.setDefaultCloseOperation (jframe.exit_on_close); jf.setVisible (จริง); } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {demo ใหม่ (); } คลาสส่วนตัว MyJPanel ขยาย JPanel {Imageicon BG; สาธารณะ myjpanel (url bg) {this.setopaque (false); // จะถูกตั้งค่าเป็นโปร่งใส this.bg = ใหม่ imageicon (bg); } // ใช้เพื่อตั้งค่าภาพพื้นหลัง @Override โมฆะสาธารณะ PaintComponent (กราฟิก g) {g.DrawImage (bg.getImage (), 0,0, this.getWidth (), this.getheight (), นี่); super.paintcomponent (G); -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น