2017-04-11 30 views
0

Ich habe 3 TextFields. Einer ist ein totalTF, der andere ist ein TenderedTF und der letzte ist ein ChangeTF. Ich frage mich, wie man den Gesamtpreis im totalTF nehmen kann und dem Benutzer erlaubt, den Betrag, den er dem Kassierer gibt, in das tenderedTF einzugeben, dann sollte er die Änderung ausrechnen, sobald der Bezahlknopf ausgewählt und in der Wechselgeldanzeige angezeigt wird . Hier ist mein Code soweit. Ich versuche, die Mathematik zu tun, dann setze die changeTF. Jede Hilfe wäre sehr dankbar, danke.Berechnen der Änderung von JTextField

JButton payButton = new JButton("Pay"); 
     payButton.setBounds(970, 569, 209, 51); 
     contentPane.add(payButton); 

     // Calculate Change 
     changeTF.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent e) 
      { 
       if(e.getSource() == payButton) 
       { 
        double change = Double.valueOf(totalTF.getText()) - Double.valueOf(tenderedTF.getText()); 
        changeTF.setText(String.valueOf(change)); 
       } 
      } 
     }); 

     tenderedTF.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent e) 
      { 
       if(e.getSource() == payButton) 
       { 
        double change = Double.valueOf(totalTF.getText()) - Double.valueOf(tenderedTF.getText()); 
        changeTF.setText(String.valueOf(change)); 
       } 
      } 
     }); 
+1

'changeTF' und' terderedTF' werden niemals Aktionsereignisse empfangen, die von 'payButton' ausgelöst werden, sie erhalten nur die von sich selbst ausgelösten Aktionsereignisse, so wie Ihr Code ist. Versuchen Sie, der Schaltfläche einen 'ActionListener' hinzuzufügen. – Berger

+1

Sie möchten, dass die Berechnung ausgeführt wird, wenn auf die Schaltfläche "Bezahlen" geklickt wird, richtig? Dann brauchen Sie einen Aktionslistener auf der Schaltfläche, nicht auf den Feldern. – lucasvw

+0

Brilliant !! es funktioniert nur, es stellt es nicht in der changeTF auf die richtigen Dezimalstellen ein. Wie soll ich das überwinden? Danke – Movillian

Antwort

0

Sie möchten Code auszuführen, wenn der Benutzer auf payButton klickt, so dass ich denke, Sie sollten den Hörer auf dem payButton hinzufügen:

payButton.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     double change = Double.valueOf(totalTF.getText()) - Double.valueOf(tenderedTF.getText()); 
     changeTF.setText(String.valueOf(change)); 
    } 
}); 

Ich denke, die Zuhörer Sie Textfelder hinzugefügt wurden, können nicht arbeiten, weil e.getSource() gibt das Textfeld zurück, das das Ereignis ausgelöst hat, es kann nicht das payButton sein.

Edit: Neue Revision gehört die Frage in gesendeter Kommentar:

payButton.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     double change = Double.valueOf(tenderedTF.getText()) - Double.valueOf(totalTF.getText()); 
     if(change<0){ 
      changeTF.setText(String.valueOf(-change) + " missing"); 
     } else { 
      changeTF.setText(String.valueOf(change)); 
     } 
    } 
}); 

Ehrlich gesagt habe ich nicht kompilieren und diesen Code testen, aber ich hoffe, dass es Ihnen die Idee gibt: Check ‚Veränderung‘ und nach verschiedenen Nachrichten liefern zum positiven oder negativen Wert.

Dies ist ein sehr grundlegender Ansatz, möchten Sie vielleicht etwas raffinierter denken.

Bitte beachten Sie, dass ich die Berechnung für den Wert der Änderung vorgenommen habe, da dieser neue Laut mehr nach der Beschreibung klingt, die Sie anhand von Feldnamen angegeben haben. Bitte nochmal nachprüfen.

Ich hoffe, es hilft. Viel Glück.

+0

Danke @Dario – Movillian

+0

@Movillian, vergessen Sie nicht "Akzeptieren" Sie die Antwort, damit die Leute wissen, dass Ihr Problem gelöst wurde. – camickr

+0

es wurde akzeptiert, danke – Movillian