Der Metallbutton, mit dem Swing kommt, ist sehr hässlich und kann unsere tatsächlichen Bedürfnisse nicht erfüllen. Daher müssen wir unsere bevorzugten Schaltflächen wie eine Bildschaltfläche usw. anpassen, wie in der Abbildung unten gezeigt.
Dann erklären Sie, wie man es macht.
(1) Finden Sie einige gute Button -Bilder, aber die Schaltflächen können sich im Bild befinden. Daher müssen wir Meuitu Xiuxiu oder PS verwenden, um die Tasten auszuwählen. Wie in der Abbildung unten gezeigt:
(2) Speichern Sie es einfach als transparenten Hintergrund.
(3) Schreiben Sie dann eine My Button -Klasse:
import Javax.imageo.imageo; Javax.swing importieren.*; import Java.awt.*; Import Java.awt.image.BuffenedImage; Public Class Newbutton erweitert Jbutton {Imageicon img; public newbutton (String -Symbol) {Super (); this.img = new ImageCon (Demo.Class.getResource (Icon)); setBorderPainted (false); setContentareAtedestilliert (falsch); setopaque (falsch); setSize (img.geticonwidth (), img.geticonHeight ()); try {bi = imageio.read (Demo.class.getResource (icon)); } catch (Ausnahme e) {joptionpane.showMessagedialog (dies, "Vielleicht existiert die Bilddatei nicht", "ImageIO -Ausnahme", joptionpane.error_message); System.exit (0); }} @Override public void PaintComponent (Grafik g) {if (this.getModel (). } else {g.drawimage (img.getImage (), 0,0, this); } super.paintComponent (g); } Bufferedimage bi; int rgb, Alpha; /*** Stellen Sie die Schaltfläche Klicken Sie nur im nicht transparenten Bereich des Bildes fest. */ @Override public boolean enthält (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) {// Wenn ein transparenter Bereich durchsucht wird, wirft GetRGB die folgende Tabelle aus der Grenzen aus, die Ausnahme zurückgeben. }}} Das obige Programm hat die Funktion enthält, um sicherzustellen, dass die Klickbereich der Parteimaus auf den gültigen Bereich des Bildes beschränkt ist.
(4) Schreiben Sie einen Demo -Klassen -Test:
Javax.swing importieren.*; import Java.awt.*; importieren java.net.url; public class Demo {public Demo () {jframe jf = new JFrame ("beliebige Form -Bild -Button -Test"); JF.SetBounds (500.200.700.500); myjpanel jp = new Myjpanel (Demo.Class.getResource ("Bg.jpg"); JP.SetLayout (NULL); Newbutton jb1 = neuer Neubutton ("bt1.png"); JB1.SetLocation (44,44); JP.ADD (JB1); JB1 = neuer Neugebäude ("Snowflower.png"); JB1.SetLocation (200,44); JP.ADD (JB1); JB1 = neuer Neugeblutton ("Bt2.png"); JB1.SetLocation (350,64); JP.ADD (JB1); JB1 = neuer Neugebäude ("bt3.png"); JB1.SetLocation (450,64); JP.ADD (JP); jf.setDefaultCloseOperation (jframe.exit_on_close); jf.setvisible (true); } public static void main (String [] args) {new Demo (); } private class myjpanel erweitert jpanel {imageicon bg; public myjpanel (url bg) {this.setopaque (false); // auf transparent eingestellt werden. this.bg = new Imageicon (BG); } // verwendet, um Hintergrund image @Override public void PaintComponent (Grafik g) {g.drawimage (bg.getImage (), 0,0, this.getWidth (), this.getheight (), this); Super.PaintComponent (G); }}}Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.