English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
) Der Standard-MetalButton von Swing ist sehr hässlich und erfüllt nicht unsere tatsächlichen Anforderungen, daher müssen wir unseren eigenen Button nach eigenem Gusto anpassen, z.B. einen Bildbutton usw. Wie folgt zu sehen ist.
) Erklären wir nun, wie man dies macht.
(1) Finden Sie einige schöne Bilder für Buttons, aber die Buttons könnten im Bild enthalten sein, daher müssen wir sie mit MeituXiuXiu oder Photoshop aus dem Bild extrahieren. Wie folgt:
(2) speichern Sie sie mit transparentem Hintergrund ab.
(3) dann schreiben Sie eine Klasse für meinen Button:
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)); } JOptionPane.showMessageDialog(this,"Das Bild könnte nicht existieren","ImageIO-Exception",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,this); } super.paintComponent(g); } BufferedImage bi ; int rgb,alpha; /** * Stellen Sie sicher, dass der Klickbereich des Buttons nur im undurchsichtigen Bildbereich liegt. */ @Override public boolean contains(int x,int y){ try{ rgb = bi.getRGB(x,y); alpha = (rgb>>24)&0xFF; if(alpha==0){ return false; } return true; } } //Wenn ein transparenter Bereich gesucht wird, wird eine ArrayIndexOutOfBoundsException ausgelöst. return false; } } }
Die obige Programmzeile überschreibt die contains-Methode, um sicherzustellen, dass der Mausklickbereich innerhalb des gültigen Bildbereichs begrenzt ist.
(4Schreiben Sie eine Demo-Klasse zum Testen:
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);//Transparenz sollte eingestellt werden. this.bg = new ImageIcon(bg); } //Verwendet, um das Hintergrundbild zu setzen @Override public void paintComponent(Graphics g){ g.drawImage(bg.getImage(),0,0,this.getWidth(),this.getHeight(),this); super.paintComponent(g); } } }
Dies ist der gesamte Inhalt dieses Artikels. Ich hoffe, er hilft Ihnen bei Ihrem Lernen und hoffe auch, dass Sie die Anstrengungen von呐喊教程 unterstützen.
Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet entnommen und gehört dem Urheberrechtlichem Eigentümer, der von Internetbenutzern selbständig bereitgestellt und hochgeladen wurde. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht manuell bearbeitet. Sie trägt auch keine Haftung für relevante rechtliche Verantwortlichkeiten. Wenn Sie urheberrechtlich geschützte Inhalte bemerken, senden Sie bitte eine E-Mail an: notice#oldtoolbag.com (Bitte ersetzen Sie # durch @ beim Senden einer E-Mail, um eine Beschwerde zu machen, und fügen Sie relevante Beweise bei. Bei nachgewiesener Täuschung wird diese Website die beanstandeten urheberrechtlichen Inhalte sofort löschen.