Partage
  • Partager sur Facebook
  • Partager sur Twitter

Un objet qui hérite de JFrame est un JComponent, non ?

Sujet résolu
Anonyme
    6 mai 2012 à 8:30:16

    Bonjour,

    J'ai un petit problème de type avec la classe suivante. La fonction show prend en paramètre un JComponent et un objet de type Donnees.

    package courbesdecroissance;
    
    import javax.swing.JComponent;
    import javax.swing.JOptionPane;
    
    public abstract class InfoMessage {
        
        public static void show(JComponent parent, Donnees donnees) {
            int poids  = donnees.getPoids()[donnees.getPoids().length][1];
            int taille = donnees.getTaille()[donnees.getTaille().length][1];
            String msg;
            msg = donnees.getNom() + " a " + getAge(donnees.getAge()) + ".\n";
            msg += "Il ou elle pèse " + (poids / 1000.0) + "kg et mesure " + taille + "cm.";
            
            JOptionPane.showMessageDialog(parent, msg, "Infos", JOptionPane.INFORMATION_MESSAGE);
        }
    
        private static String getAge(int age) {
            String msg = (age / 7) + "semaines";
            if (age % 7 != 0) msg += " et " + (age % 7) + " jours";
            return msg;
        }
    
    }
    


    Jusque là, rien d'anormal. Seulement voilà, quand j'appelle cette fonction (InfoMessage.show) dans ma classe principale, ça ne marche pas... Voici le code

    package courbesdecroissance;
    
    import javax.swing.JFrame;
    
    public class CourbesDeCroissance extends JFrame {
    
        Donnees donnees = new Donnees("", "", "");
        Panneau panneau = new Panneau(donnees);
    
        public CourbesDeCroissance() {
            this.setTitle("Courbes de croissance");
            this.setSize(1280, 1024);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setContentPane(panneau);
            this.setLocationRelativeTo(null);
            this.setVisible(true);
        }
    
        public static void main(String[] args) {
            CourbesDeCroissance cdc = new CourbesDeCroissance();
    
            InfoMessage.show(cdc, donnees);
        }
    }
    


    cdc hérite bien de JFrame. Donc InfoMessage.show(cdc, donnees); devrait marcher. Or, NetBeans me dit que show(CourbesDeCroissance, Donnees) n'existe pas. C'est bizarre car j'ai déjà utilisé ce procédé dans d'autres programmes et ça marchait très bien. La seule différence, c'est que j'appelais InfoMessage.show ailleurs que dans ma classe contenant main.

    Quelqu'un aurait une idée de ce qui cloche, svp ?

    Merci.
    • Partager sur Facebook
    • Partager sur Twitter
      6 mai 2012 à 10:04:24

      Salut,

      avant de poser ce genre de question, regarde la javadoc ^^

      Héritage de JFrame :
      java.lang.Object
      extended by java.awt.Component
      extended by java.awt.Container
      extended by java.awt.Window
      extended by java.awt.Frame
      extended by javax.swing.JFrame

      Javadoc de JFrame :
      http://docs.oracle.com/javase/6/docs/a [...] g/JFrame.html

      Héritage de JComponent :
      java.lang.Object
      extended by java.awt.Component
      extended by java.awt.Container
      extended by javax.swing.JComponent

      Javadoc de JComponent :
      http://docs.oracle.com/javase/6/docs/a [...] omponent.html
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        6 mai 2012 à 10:26:30

        En fait, j'ai confondu avec JPanel qui est bien un JComponent. Effectivement, avec les JFrame ça ne fonctionne pas. Merci.
        • Partager sur Facebook
        • Partager sur Twitter

        Un objet qui hérite de JFrame est un JComponent, non ?

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown