2016-12-10 1 views
1

Je crée un programme JFrame d'un calculateur de formule quadratique de base. J'ai créé un écouteur d'action pour transformer trois champs de texte en trois valeurs doubles, égales à a, b et c, qui sont utilisées dans la formule quadratique. Je ne peux pas comprendre comment les mettre dans mon autre ActionListener pour le bouton quand l'utilisateur finit. Le but des boutons est d'effectuer le calcul de l'équation quadratique une fois que l'utilisateur a fini et afficher la réponse sur un nouveau JFrame. Voici mon code, quelqu'un a des suggestions sur la façon de s'y prendre?Comment puis-je introduire des valeurs Double d'une méthode ActionListener dans une autre pour effectuer un calcul? Java

Edit: Je reçois une erreur lorsque vous essayez d'effectuer les calculs en me disant « ne peut pas trouver le symbole »

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import java.math.*; 


public class GUISource extends JFrame { 

private JTextField textA; 
private JTextField textB; 
private JTextField textC; 
private JLabel labA; 
private JLabel labB; 
private JLabel labC; 
private JButton butA; 
private JButton butB; 
private JButton butC; 

public GUISource(){ 


    super ("Quadratic Equatic"); 
    setLayout (new FlowLayout()); 

    labA = new JLabel("Enter your A value:"); 

    add(labA); 

    textA = new JTextField(30); 

    add(textA); 

    butA = new JButton("Enter"); 

    //add(butA); 

    labB = new JLabel("Enter your B value:"); 

    add(labB); 

    textB = new JTextField(30); 

    add(textB); 

    //butB = new JButton("Enter"); 

    //add(butB); 

    labC = new JLabel("Enter your C value:"); 

    add(labC); 

    textC = new JTextField(30); 

    add(textC); 

    //butC = new JButton("Enter"); 

    //add(butC); 

    add(butA); 



    listenPlease handle = new listenPlease(); 
    //labA.addActionListener(handle); 
    //labB.addActionListener(handle); 
    //labC.addActionListener(handle); 
    //butA.addActionListener(handle); 
    //butB.addActionListener(handle); 
    //butC.addActionListener(handle); 
    textA.addActionListener(handle); 
    textB.addActionListener(handle); 
    textC.addActionListener(handle); 

    buttonListen handler = new buttonListen(); 

    butA.addActionListener(handler); 



} 


private class listenPlease implements ActionListener{ 

    public void actionPerformed (ActionEvent e){ 

     String transfer = ""; 

     if (e.getSource() == textA){ 
      transfer = String.format("field 1 : %s", e.getActionCommand()); 
      double a = Integer.parseInt(transfer); 

     } 
     else if(e.getSource() == textB){ 
      transfer = String.format("field 2: %s", e.getActionCommand()); 
      double b = Integer.parseInt(transfer); 

     } 
     else if(e.getSource() == textC){ 
      transfer = String.format("frield 3: %s", e.getActionCommand()); 
      double c = Integer.parseInt(transfer); 

     } 

    } 


} 

private class buttonListen implements ActionListener{ 

    //private double a; 
    //private double b; 
    //private double c; 


    public void actionPerformed (ActionEvent ButtonPress){ 


     JFrame Answer = new JFrame("Answer"); 

     Answer.setSize(200, 200); 

     double d = (Math.pow(b, 2)+(4 * a * c)); 



    } 


} 


} 

Répondre

2

Vous pouvez mettre les trois double s dans les variables statiques:

public class GUISource extends JFrame { 
//same as before 
    private JTextField textA; 
    private JTextField textB; 
    private JTextField textC; 
    private JLabel labA; 
    private JLabel labB; 
    private JLabel labC; 
    private JButton butA; 
    private JButton butB; 
    private JButton butC; 

    public static double a =0,b=0,c=0; 

puis dans votre actionListener:

if (e.getSource() == textA){ 
    transfer = String.format("field 1 : %s", e.getActionCommand()); 
    double a = Integer.parseInt(transfer); 
    GUISource.a = a; 
} 
//similarly for b and c 
+0

Merci pour la réponse rapide! Cela l'a réparé! Très appréciée! – bordia

+1

@bordia alors vous devriez accepter la réponse et l'upvote si vous le trouvez utile – ItamarG3

+1

Je le ferai quand le délai de 10 minutes pour accepter les réponses me permet! – bordia