Applet faisant planter le navigateur

Résolu
iplusplus Messages postés 4 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 19 mai 2008 - 16 mai 2008 à 23:15
iplusplus Messages postés 4 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 19 mai 2008 - 19 mai 2008 à 11:10
Bonjour à tous,

Je me suis mis à Java il y a quelques jours et j'ai un problème avec une applet qui se compile sans problème mais fait planter le navigateur.

Merci si vous pouvez éclairer ma pauvre lanterne; voici les détails...

L'applet en question doit permettre d'indiquer des rendements partiels dans des champs pour calculer un rendement global (par multiplication).

Elle fait appel à un champ de texte spécial appelé NumField et destiné à recevoir des nombres (les rendements). Le code de NumField se trouve ici: http://hopper.unco.edu/course/isaacson/NumField.java

J'ai lu en diagonale le code qui précède et il m'a semblé correct.

J'ai supprimé le package Utilities; au début du code, ne voyant pas trop à quoi cela correspondait --l'inclusion dans un package je suppose-- et j'ai rajouté un second constructeur de NumField (à la suite du premier), afin qu'en créant un NumField on puisse spécifier sa taille (paramètre size) :



   public NumField(int size)
   {
      super(size);              // Call the superclass constructor
      super.setText("");
      setEditable(false);    // Don't let the user in
      hasDecimalPoint = false;
      setBackground(Color.white);
   }




Quant au prototype de l'applet, le voici :




import java.applet.*;
import java.awt.*;



public class rendement_applet extends Applet {

    public void init() {
       
        setLayout(new BorderLayout());
       
        // Crée le titre
        Label titre = new Label("Calcul du rendement");
        add("North",titre);
       
        // Crée le panneau des rendements partiels
        Panel p1 = new Panel();
        p1.setLayout(new GridLayout(5,2));
       
        addLabel2Panel("nu hélice",p1);
        addNumField2Panel(4,p1);
       
        addLabel2Panel("nu multiplic.",p1);
        addNumField2Panel(4,p1);
       
        addLabel2Panel("nu génér.",p1);
        addNumField2Panel(4,p1);
       
        addLabel2Panel("nu transfo.",p1);
        addNumField2Panel(4,p1);
       
        addLabel2Panel("nu redress.",p1);
        addNumField2Panel(4,p1);
       
        add("Center",p1);
       
        // Crée le panneau du rendement global
        Panel p2 = new Panel();
        p2.setLayout(new GridLayout(1,2));
        addLabel2Panel("nu",p2);
        addNumField2Panel(4,p2);
       
        add("South",p2);
    }
   
    void addLabel2Panel(String S, Panel p) {
        p.add(new Label(S));
    }
   
    void addNumField2Panel(int size, Panel p) {
        p.add(new NumField(size));
    }
       
}

1 réponse

iplusplus Messages postés 4 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 19 mai 2008
19 mai 2008 à 11:10
Je pense que l'erreur était due à un mauvais constructeur pour NumField (sous-classe de TextField).



   public NumField(int size) // Remplacer int par String
   {
      super(size);              // Call the superclass constructor
      super.setText("");
      setEditable(false);    // Don't let the user in
      hasDecimalPoint = false;
      setBackground(Color.white);
   }


Entretemps, j'ai modifé mon applet. Donc difficile de dire si la correction de l'erreur aurait suffit à résoudre le problème.
3
Rejoignez-nous