Je voudrais utiliser une image en tant que bouton en Java, et j'ai essayé de le faire:
BufferedImage buttonIcon = ImageIO.read(new File("buttonIconPath"));
button = new JButton(new ImageIcon(buttonIcon));
Mais cela montre toujours le bouton réel derrière l'image, je voudrais seulement que l'image fonctionne comme un bouton, comment puis-je faire cela?
Supprimez la bordure comme suit:
button.setBorder(BorderFactory.createEmptyBorder());
et puis aussi le contenu1:
button.setContentAreaFilled(false);
1: Extrait de la solution ajoutée à la question par @ 3sdmx
Une suggestion serait de définir l'image en tant qu'étiquette et d'ajouter un écouteur de souris à l'étiquette pour détecter les clics.
Exemple:
ImageIcon icon = ...;
JLabel button = new JLabel(icon);
button.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
... handle the click ...
}
});
BufferedImage buttonIcon = ImageIO.read(new File("myImage.png"));
button = new JButton(new ImageIcon(buttonIcon));
button.setBorderPainted(false);
button.setFocusPainted(false);
button.setContentAreaFilled(false);
buttonIcon.setBorder (nouvel EmptyBorder (0,0,0,0));
écris juste ceci
button.setContentAreaFilled(false);
button.setBorderPainted( false );
Cela peut être fait facilement dans les Netbeans en définissant la propriété contentAreaFilled Property sur False
J'ai suivi les étapes ci-dessous et j'ai pu créer un 'ImageButton' avec succès.
JButton
info.png
dans le dossier src\main\resources et chargé à l'aide du chargeur de classes). La structure du projet est la suivante. Border
videPFB le code qui a fonctionné pour moi
JButton btnNewButton = new JButton("");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Info clicked");
}
});
String iconfilePath = this.getClass().getClassLoader().getResource("info.png").getFile();
btnNewButton.setIcon(new ImageIcon(iconfilePath));
btnNewButton.setBounds(10, 438, 39, 31);
btnNewButton.setBorder(BorderFactory.createEmptyBorder());
btnNewButton.setContentAreaFilled(false);
btnNewButton.setFocusable(false);
contentPane.add(btnNewButton);
Le bouton de sortie résultant du code ci-dessus est comme ci-dessous
Pour autant que je sache, il n'y a pas de moyen facile de le faire, vous devrez remplacer la méthode "paintComponent" de la classe JButton pour ne pas afficher votre image, si vous voulez seulement afficher une image et vous comporter comme un bouton, vous pouvez ajouter un JPanel qui dessine l'image ( clicky ) et ajoute un MouseListener/MouseAdapter pour gérer l'événement "mousePressed"