Forme Modifiée JButton
Nouyou
Messages postés
51
Statut
Membre
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Salut j'ai une matrice de boutons (Centre[x][y]) que j'essaye de modifier la forme de ses boutons mais je n'arrive pas . Le programme m'affiche cette exception
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - anonymous class implements interface; cannot have arguments
voici le code
et voici la classe RondButton
Merci de m'aider , c'est urgent :)
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - anonymous class implements interface; cannot have arguments
voici le code
private JButton createCell(int x, int y) { Icon icon=new Icon("RondG.png") { @Override public void paintIcon(Component c, Graphics g, int x, int y) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @Override public int getIconWidth() { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @Override public int getIconHeight() { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } }; centre[x][y] = new RondButton(icon); centre[x][y].addActionListener(new MatriceListener(this,x,y)); return centre[x][y]; }
et voici la classe RondButton
public class RondButton extends JButton { public RondButton(Icon icon) { super(icon); setBorderPainted(false); setFocusPainted(false); setContentAreaFilled(false); } /** * détermine si le point (x, y) est à l'intérieur de l'icône circulaire */ public boolean contains(int x, int y) { Dimension size = getSize(); float x0 = size.width / 2F; float y0 = size.height / 2F; Icon icon = getIcon(); float w = icon.getIconWidth() / 2F; float h = icon.getIconHeight() / 2F; return (x - x0) * (x - x0) + (y - y0) * (y - y0) <= w * h; } }
Merci de m'aider , c'est urgent :)
A voir également:
- Forme Modifiée JButton
- Mise en forme conditionnelle excel - Guide
- Mise en forme tableau word - Guide
- Mise en forme tableau croisé dynamique - Guide
- Mise en forme whatsapp - Guide
- Appliquez à tous les paragraphes du document à télécharger, à l’exception des titres et des sous-titres, la mise en forme suivante : - Guide
1 réponse
Bonjour,
Je n'ai jamais eu cette erreur, mais vu sa description et le code je dirais que le problème est sur
Tu construis un objet avec un constructeur qui prend en paramètre un String, or c'est fait dans une classe anonyme qui ne peut avoir que le constructeur par défaut (sans argument).
Pour t'en sortir, il faut déplacer le code pour ne plus avoir de classe anonyme, mais soit une vraie classe, soit une classe interne, selon tes autres contraintes.
Je n'ai jamais eu cette erreur, mais vu sa description et le code je dirais que le problème est sur
Icon icon=new Icon("RondG.png") {
Tu construis un objet avec un constructeur qui prend en paramètre un String, or c'est fait dans une classe anonyme qui ne peut avoir que le constructeur par défaut (sans argument).
Pour t'en sortir, il faut déplacer le code pour ne plus avoir de classe anonyme, mais soit une vraie classe, soit une classe interne, selon tes autres contraintes.
class Icon2 implements Icon { Icon2(String fileName) { } @Override // ... } private JButton createCell(int x, int y) { Icon icon=new Icon2("RondG.png"); //..
Mais je ne vois pas trop l'intérêt de définir toi même ta propre classe Icon. Ce que tu essayes de faire existe déjà, avec un ImageIcon par exemple.
Voir la documentation : javax.swing.ImageIcon, How to Use icons
Remarque : dans ce cas ce ne serait pas l'interface Icon qu'il faudrait implémenter, mais plutôt IconImage qu'il faudrait étendre.