Frage

Ich bin ein Währungsumrechner schreiben, aber ich bin für jede Währung ein wenig Mühe caculating den Wechselkurs haben. Grundsätzlich möchte ich der Benutzer eine Currecy auszuwählen zuerst dann einen Betrag ein und drücken Sie „go“ Enter-Taste, um die Geschwindigkeit zu berechnen. aber ich habe Probleme mit den Zuhörern auf JMenuItem und JButton. Ich habe für menuItem und JButton zwei Zuhörer erklärt. Wie verwende ich den Hörer auf die Schaltfläche für die Auswahl auf dem menuIten gemacht zu achten, so dass es die richtige Currecy Berechnung macht?

Dank.

CODE:

    private class selectionListener implements ActionListener
    {
        double EuroToSterling(double euro)
        {
            double total = Double.parseDouble(amountField.getText());
            return total;
        }
        public void actionPerformed(ActionEvent e)
        {
            if (e.getActionCommand().equals("Euros"))
               // result = EuroToSterling(10*euro);
                currencyMenu.setLabel("Euros");
               // answerLabel.setText("this" + EuroToSterling(1.22*2));

            if (e.getActionCommand().equals("Japanese Yen"))
                currencyMenu.setLabel("Japanese Yen");

        }
    }



    private class GoButtonListener implements ActionListener
    {
        public void actionPerformed(ActionEvent evt)
        {

//please help with this section
War es hilfreich?

Lösung

Versuchen Sie, diese aus dem Euro. Sollten Sie einen Ort, um zu beginnen.


/*
 *
 * Currency converting
 *
 */

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JTextField;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import javax.swing.JComboBox;

import javax.swing.UIManager;

public class CurrencyConverterWin extends JFrame {

    private JLabel promptLabel;
    private JTextField amountField;
    private JButton goButton;
    private JPanel inputPanel;
    private JPanel answerPanel;
    private JLabel answerLabel;
    private JLabel selectLabel;
    private JComboBox currencyMenuBar;
    private JPanel menuPanel;
    private double result = 0.0;
    private double euro = 1.22257;
    private double japYen = 152.073;
    private double rusRuble = 42.5389;
    private double usd = 1.5577;

    public CurrencyConverterWin() {
        super();
        this.setSize(500, 200);
        this.setTitle("Currency Converter Window");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        this.setLayout(new GridLayout(3, 1));

        this.selectLabel = new JLabel("Select a currency to convert to: ", JLabel.RIGHT);
        this.answerLabel = new JLabel(" ", JLabel.CENTER);

        currencyMenuBar = new JComboBox(new String[]{"Euros","Japanese Yen","Russian Rubles","US Dollars"});

        this.menuPanel = new JPanel();
        this.menuPanel.add(this.selectLabel);
        this.menuPanel.add(this.currencyMenuBar);
        this.add(this.menuPanel);

        this.promptLabel = new JLabel("(select a currency first) ", JLabel.RIGHT);
        this.answerLabel = new JLabel(" ", JLabel.CENTER);

        this.amountField = new JTextField("", 8);
        this.goButton = new JButton("GO");
        goButton.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buttonClicked(evt);
            }
        });

        this.inputPanel = new JPanel();
        this.inputPanel.add(this.promptLabel);
        this.inputPanel.add(this.amountField);
        this.inputPanel.add(this.goButton);

        this.add(this.inputPanel);

        this.answerPanel = new JPanel();
        this.answerPanel.add(this.answerLabel);
        this.add(this.answerPanel);
    }

    double EuroToSterling() {
        double total = Double.parseDouble(amountField.getText()) * euro;
        return total;
    }

    double JapYenToSterling()
    {
        double japToSterlingTotal = Double.parseDouble(amountField.getText()) * japYen;
        return japToSterlingTotal;
    }


//String currencyEntered = yearField.getText();
    public void buttonClicked(ActionEvent evt) {
        if(currencyMenuBar.getSelectedItem().equals("Euros"))
        {
            answerLabel.setText(EuroToSterling() + " Euros");
        }
        if(currencyMenuBar.getSelectedItem().equals("Japanese Yen"))
        {
            answerLabel.setText(JapYenToSterling() + " Japanese Yen");
        }
    }

    public static void main(String[] args) {        
        try{UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");}
        catch (Exception e){e.printStackTrace();}
        CurrencyConverterWin win = new CurrencyConverterWin();
        win.setVisible(true);
    }
}

Andere Tipps

Die übliche Vorgehensweise ist, dass das Menü Hörer den Zustand der Anwendung ändert (das heißt ruft eine Methode, die den Wechselkurs in einem Feld sparen).

Dann kann der Berechnungscode diesen Wert lesen und verwenden.

ich würde auch vorschlagen, dass Sie verwenden, um eine JComboBox die Währungen zu speichern. Sie würden ein Objekt erstellen, sowohl den Namen der Währung zu speichern und die Conversion-Rate. Wenn Sie dann den umgerechneten Betrag berechnen müssen erhalten Sie das ausgewählte Element aus der Combo und seine Conversion-Rate in Ihrer Berechnung verwenden. Mit diesem Ansatz können Sie ganz einfach die Anzahl der Währungen erweitern Sie unterstützen.

Check out: Wie Verwendung Map-Element als Text eines JComboBox für ein Beispiel, um Sie über die Verwendung eines Objekts in der Kombinationsfeld starten.

Ich persönlich würde in einer Enumeration hinzufügen, um die Währungsumrechnungsart zu bezeichnen. zB:

public enum ConversionType {
   DOLLARS,
   EUROS,
   RUBLES
   //ETC...
}

Mit diesem können Sie eine Statusvariable in der Klasse halten:

private ConversionType fromType;

Dies ist, was Sie in Ihrer Auswahl Hörer eingestellt.

Von dort aus ist es eine Frage, die verschiedenen Umwandlungen in Ihrer Aktion Hörer tun auf der Grundlage der Zustandsgröße (fromType). So etwas wie folgt aus:

if( fromType== EUROS ) {
 convertEurosToSterling( value1, value2 );
} 

Dies ist eine Art einer allgemeinen Ausrichtung. - Ich hoffe, das hilft

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top