Partage
  • Partager sur Facebook
  • Partager sur Twitter

[java] Pourquoi ça ne fonctione pas??

    10 janvier 2007 à 15:16:21

    Bonjour,

    Je ne comprend pas pourquoi mon code ne marche pas. La compilation et le programme se lancent mais seule une fenêtre vide s'affiche. Comment faire ?
    - Le problème vient surement des fonctions sqrt ou rint. (rint c'est comme round sauf que ça renvoit un double).

    Voici mon code :

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.lang.Math;

    class Window extends JFrame implements ActionListener
    {
            public Window ()
            {
                    setVisible(true);
                    setResizable(false);
                    setTitle("Equation");
                    setSize(275, 125);
                    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                   
                    nbreA = new JLabel("Nombre A :");
                    texteSaisieA = new JTextField(20);
                   
                    nbreB = new JLabel("Nombre B :");
                    texteSaisieB = new JTextField(20);
                   
                    nbreC = new JLabel("Nombre C :");
                    texteSaisieC = new JTextField(20);
                   
                    sendButton = new JButton("Ok");
                    aZero = new JButton("A Zéro");
                   
                    Container cont = getContentPane();
                    cont.setLayout(new GridLayout(4, 3));
                   
                    cont.add(nbreA);
                    cont.add(texteSaisieA);
                    cont.add(nbreB);
                    cont.add(texteSaisieB);
                    cont.add(nbreC);
                    cont.add(texteSaisieC)
                    cont.add(aZero);
                    cont.add(sendButton);
                   
                    aZero.addActionListener(this);
                    sendButton.addActionListener(this);
            }
           
            public void actionPerformed (ActionEvent ev)
            {
                    if (ev.getSource() == aZero)
                    {
                            texteSaisieA.setText("");
                            texteSaisieB.setText("");
                            texteSaisieC.setText("");
                    }
                    else if (ev.getSource() == sendButton)
                    {
                            if (texteSaisieA.getText().equals("") || texteSaisieB.getText().equals("") || texteSaisieC.getText().equals(""))
                            {
                                    JOptionPane.showMessageDialog(this, "Vous devez tout compléter !", "ERREUR!", JOptionPane.ERROR_MESSAGE);
                            }
                            else if (Integer.parseInt(texteSaisieA.getText()) == 0)
                            {
                                    JOptionPane.showMessageDialog(this, "Le nombre A ne doit pas être nul !", "INFO", JOptionPane.INFORMATION_MESSAGE);
                            }
                            else
                            {
                                    // suite du calcul
                                    calcul(Integer.parseInt(texteSaisieA.getText()), Integer.parseInt(texteSaisieB.getText()), Integer.parseInt(texteSaisieC.getText()));
                            }
                    }
            }
           
            public void calcul (int nbA, int nbB, int nbC)
            {
                    // delta
                    delta = (nbB*nbB)-4*nbA*nbC;
                   
                    // cas des racines évidentes
                    while (i <= 10)
                    {
                            if ((nbA + nbB + nbC) == 0)
                            {
                                    x1 = i;
                                    x2 = nbC/nbA;
                                    break;
                            }
                    i++;
                    }
                   
                    if (re == false)
                    {
                            // On étudi les cas
                            if (delta < 0)
                            {
                                    // delta < 0, aucue solution
                                    JOptionPane.showMessageDialog(this, "DELTA < 0\nIl n'y a aucune racine...", "Sortie", JOptionPane.INFORMATION_MESSAGE);
                            }
                            else if (delta == 0)
                            {
                                    //delta = 0, 1 solution unique
                                    x1 = (-nbB)/(2*nbA);
                                    Math.rint(x1);
                                   
                                    JOptionPane.showMessageDialog(this, "DELTA = 0\nIl y a une soltion double :\n\nDELTA = " + delta + "\nx = " + x1, "Sortie", JOptionPane.INFORMATION_MESSAGE);
                            }
                            else if (delta > 0)
                            {
                                    // delta > 0, 2 solutions
                                    x1 = ((-nbB)+Math.sqrt(delta))/(2*nbA);
                                    x1 = Math.rint(x1);
                                   
                                    x2 = ((-nbB)-Math.sqrt(delta))/(2*nbA);
                                    x2 = Math.rint(x2);
                                   
                                    JOptionPane.showMessageDialog(this, "DELTA > 0\nIl y a deux solutions uniques :\n\nDELTA = " + delta + "\nx1 = " + x1 + "\nx2 = " + x2, "Sortie", JOptionPane.INFORMATION_MESSAGE);
                            }
                    }
                    else
                    {
                            JOptionPane.showMessageDialog(this, "Racine évidente !\nLe script a détécté une racine évidente de " + x1 + ".\n\nx1 = " + x1 + "\nx2 = " + x2, "Sortie", JOptionPane.INFORMATION_MESSAGE);
                    }
            }
           
            private double delta, x1, x2;
            private static byte i = -10;
            private boolean re = false;
            private JTextField texteSaisieA, texteSaisieB, texteSaisieC;
            private JLabel nbreA, nbreB, nbreC;
            private JButton aZero, sendButton;
    }
                           
    public class equation
    {
            public static void main (String[] args)
            {
                    new Window();
            }
    }                   


    Merci ;)
    • Partager sur Facebook
    • Partager sur Twitter
      10 janvier 2007 à 15:34:31

      il me semble que tu n'as pas ajouter ton Container à ta fenêtre....

      import javax.swing.*;
      import java.awt.*;
      import java.awt.event.*;
      import java.lang.Math;

      class Window extends JFrame implements ActionListener
      {
              public Window ()
              {
                      setVisible(true);
                      setResizable(false);
                      setTitle("Equation");
                      setSize(275, 125);
                      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                     
                      nbreA = new JLabel("Nombre A :");
                      texteSaisieA = new JTextField(20);
                     
                      nbreB = new JLabel("Nombre B :");
                      texteSaisieB = new JTextField(20);
                     
                      nbreC = new JLabel("Nombre C :");
                      texteSaisieC = new JTextField(20);
                     
                      sendButton = new JButton("Ok");
                      aZero = new JButton("A Zéro");
                     
                      Container cont = getContentPane();
                      cont.setLayout(new GridLayout(4, 3));
                     
                      cont.add(nbreA);
                      cont.add(texteSaisieA);
                      cont.add(nbreB);
                      cont.add(texteSaisieB);
                      cont.add(nbreC);
                      cont.add(texteSaisieC);
                      cont.add(aZero);
                      cont.add(sendButton);
                     
                      aZero.addActionListener(this);
                      sendButton.addActionListener(this);
                     


                      this.add(cont);

              }


      Personnellement j'utilise des JPanel mais je pense que ça doit fonctionner pareil.... :D
      • Partager sur Facebook
      • Partager sur Twitter
        10 janvier 2007 à 22:16:21

        Il faudrait que je mette un :

        cont.add(this);


        ???
        • Partager sur Facebook
        • Partager sur Twitter
          11 janvier 2007 à 8:11:22

          Non, la tu ajoutes la frame a ton conteneur, alors que tu veux ajouter le conteneur à la frame !
          add(cont); devrait marcher :)
          • Partager sur Facebook
          • Partager sur Twitter
            14 janvier 2007 à 15:25:20

            Je vais essayer.
            Merci beaucoup... ^^
            • Partager sur Facebook
            • Partager sur Twitter

            [java] Pourquoi ça ne fonctione pas??

            × 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