إن MetalButton الذي يأتي مع Swing قبيح للغاية ولا يمكنه تلبية احتياجاتنا الفعلية ، لذلك نحن بحاجة إلى تخصيص أزرارنا المفضلة ، مثل زر الصورة ، وما إلى ذلك كما هو موضح في الشكل أدناه.
ثم اشرح كيفية تحقيق ذلك.
(1) ابحث عن بعض صور الأزرار الجيدة ، ولكن قد تكون الأزرار داخل الصورة ، لذلك نحتاج إلى استخدام Meitu Xiuxiu أو PS لاختيار الأزرار. كما هو مبين في الشكل أدناه:
(2) فقط حفظه كخلفية شفافة.
(3) ثم اكتب فئة الزر الخاصة بي:
استيراد javax.imageio.imageio ؛ استيراد javax.swing.*؛ استيراد java.awt.*؛ استيراد java.awt.image.bufferedImage ؛ يمتد فئة Newbutton العامة jbutton {imageicon img ؛ Newbutton العام (string icon) {super () ؛ this.img = new imageicon (demo.class.getResource (icon)) ؛ setBorderPainted (false) ؛ setContAntareafelled (false) ؛ setopaque (خطأ) ؛ setSize (img.geticonwidth () ، img.geticonheight ()) ؛ حاول {bi = imageio.read (demo.class.getResource (icon)) ؛ } catch (استثناء e) {joptionpane.showmessagedialog (هذا ، "ربما لا يوجد ملف الصورة" ، "Imageio استثناء" ، joptionpane.error_message) ؛ System.exit (0) ؛ }} Override public void paintcomponent (Graphics g) {if (this.getModel (). isPressed ()) {g.drawImage (img.getimage () ، 1،1 ، this) ؛ } آخر {g.drawImage (img.getImage () ، 0،0 ، هذا) ؛ } 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 ؛ } آخر {return true ؛ }} catch (ArrayIndExOutofBoundSexception e) {// عندما يتم البحث في منطقة شفافة ، يلقي getRGB الجدول التالي من حدود الاستثناء إرجاع false ؛ }}} أعاد البرنامج أعلاه كتابة وظيفة تحتوي على وظيفة لضمان تقتصر منطقة النقر على الماوس على المنطقة الصالحة للصورة.
(4) اكتب اختبار الفصل التجريبي:
استيراد javax.swing.*؛ استيراد java.awt.*؛ استيراد java.net.url ؛ Demo Class Public {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 = newbutton new ("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 (صواب) ؛ } public static void main (string [] args) {new Demo () ؛ } الفئة الخاصة myjpanel تمتد jpanel {imageicon bg ؛ myjpanel العامة (url bg) {this.setopaque (false) ؛ // ليتم ضبطها على شفاف. this.bg = new imageicon (bg) ؛ } // المستخدمة لتعيين صورة خلفية @Override public paintcomponent (الرسومات g) {g.drawImage (bg.getimage () ، 0،0 ، this.getWidth () ، this.getheight () ، هذا) ؛ Super.PaintComponent (G) ؛ }}}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.