English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
)Les boutons metal par défaut de Swing sont très laids et ne répondent pas à nos besoins réels, donc nous devons personnaliser un bouton de notre choix, par exemple un bouton d'image. Voici un exemple :
)Expliquons ensuite comment le faire.
(1)Trouvez des images de boutons jolis, mais les boutons peuvent être à l'intérieur de l'image, donc nous devons utiliser MeituXiuXiu ou Photoshop pour extraire le bouton. Voici un exemple :
(2)enregistrer avec un fond transparent.
(3)écrivez une classe de bouton personnalisée:
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,"Il est possible que le fichier image soit introuvable","Exception 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,this); } super.paintComponent(g); } BufferedImage bi ; int rgb,alpha; /** * Définir la zone de clic du bouton uniquement sur la zone non transparente de l'image. */ @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; } } //Lorsque le domaine transparent est trouvé, une exception d'index d'array hors limites est déclenchée par getRGB return false; } } }
La programme redéfinit la fonction contains pour garantir que la zone de clic du curseur est limitée à l'intérieur de la zone valide de l'image.
(4Écrire une classe Demo pour tester :
import javax.swing.*; import java.awt.*; import java.net.URL; public class Demo { public Demo(){ JFrame jf=new JFrame("Test de bouton d'image de forme aléatoire"); jf.setBounds(500,200,700,500); myJPanel jp = new myJPanel(Demo.class.getResource("bg.jpg")); jp.setLayout(null); nouveauBouton jb1 = new newButton("bt1.png"); 1.setLocation(44,44); jp.add(jb1); 1 = new newButton("snowFlower.png"); 1.setLocation(200,44); jp.add(jb1); 1 = new newButton("bt2.png"); 1.setLocation(350,64); jp.add(jb1); 1 = new newButton("bt3.png"); 1.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);//Doit être transparent. this.bg = new ImageIcon(bg); } //Utilisé pour définir l'image de fond @Override public void paintComponent(Graphics g){ g.drawImage(bg.getImage(),0,0,this.getWidth(),this.getHeight(),this); super.paintComponent(g); } } }
Voici la totalité du contenu de cet article, j'espère qu'il vous sera utile dans vos études, et j'espère que vous soutenirez également le tutoriel criant.
Déclaration : le contenu de cet article est issu d'Internet, propriété des auteurs respectifs, contribué et téléversé par les utilisateurs d'Internet, le site Web ne détient pas de droits de propriété, n'a pas été traité par l'éditeur humain et n'assume aucune responsabilité juridique. Si vous trouvez du contenu présumé enfreignant les droits d'auteur, veuillez envoyer un e-mail à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un e-mail pour signaler une violation et fournir des preuves. Une fois confirmée, le site supprimera immédiatement le contenu présumé enfreignant les droits d'auteur.)