Hallo an alle... Ich verzweifle bald....Wahrscheinlich bin ich nur grad bissl verwirrt!
Wir sollen einen Währungsrechner in eine GUI implementieren. Dazu habe ich folgende Klassen geschrieben welche von meinem Prof. bereits abgesegnet wurden.
Die CurrencyEnum Klasse ist diese hier:
Die dazugehörige Testklasse ist CurrencyTest, diese hier:
Dazu ein Interface mit der Methode convert:
Und schließlich meine gebastelte GUI:
Nun zu meinem Problem: Ich möchte nun, wenn ich im linken Textfeld (in meinem Fall JTextfield betrag1) eine Zahl eingebe, dass diese umgerechnet und im rechten Textfeld (JTextfield betrag2) ausgegeben wird. Dabei soll es so umgerechnet werden wie es in den ComboBoxen ausgewählt wird.
Wie mache ich denn das nun? Wahrscheinlich auch mit einem ActionListener, aber ich habe kein Plan WIE ich das machen soll....:shock:
Wir sollen einen Währungsrechner in eine GUI implementieren. Dazu habe ich folgende Klassen geschrieben welche von meinem Prof. bereits abgesegnet wurden.
Die CurrencyEnum Klasse ist diese hier:
Java:
package de.hszg.currency;
/**
* Klasse für die Währungskurse und der Umrechnung
* @author Steffen Kulke
*/
public enum CurrencyEnum implements Currency {
/**Währungskurse
*
*/
USD (1.00),
EUR (1.39),
CAD (0.90),
AUD (0.90),
GBP (1.66);
public final double kurs;
CurrencyEnum(double kurs) {
this.kurs = kurs;
}
public double getKurs(){
return kurs;
}
/**Methode für die Umrechnung von Währung zu anderer Währung
*
*/
public double convert(double amount, CurrencyEnum to){
double temp = ((amount*kurs)/to.kurs)*10000;
temp = Math.round(temp);
temp = temp/10000;
return temp;
}
@Override
public void convert() {
// TODO Automatisch generierter Methodenstub
}
}
Die dazugehörige Testklasse ist CurrencyTest, diese hier:
Java:
package de.hszg.currency;
/**
* Klasse für den Test von CurrencyEnum
* @author Steffen Kulke
*/
class CurrencyTest {
public static void main(String[] args){
new CurrencyTest();
}
CurrencyTest(){
convertTest();
}
/**Erstellte Testfälle für CurrencyEnum
*
*/
void convertTest(){
CurrencyEnum eur = CurrencyEnum.EUR;
double x = eur.convert(10,CurrencyEnum.USD);
annahmeGleich(x,13.90,0.03);
CurrencyEnum Eur = CurrencyEnum.EUR;
double y = Eur.convert(0,CurrencyEnum.USD);
annahmeGleich(y,13.90,0.03);
CurrencyEnum EUr = CurrencyEnum.EUR;
double z = EUr.convert(-10,CurrencyEnum.USD);
annahmeGleich(z,13.90,0.03);
CurrencyEnum euR = CurrencyEnum.EUR;
double a = euR.convert(10,CurrencyEnum.GBP);
annahmeGleich(a,8.37,0.03);
CurrencyEnum cad = CurrencyEnum.CAD;
double b = cad.convert(10,CurrencyEnum.EUR);
annahmeGleich(b,6.47,0.03);
}
/** Methode um zu prüfen ob die erwarteten
* Ergebnisse mit den tatsächlich berechneten
* übereinstimmen
*/
void annahmeGleich(double x, double i, double t){
if(x<=0){
System.out.print("Waehrungsumrechnung mit Nullmenge oder negativen Wert nicht moeglich ");
}
else{
if(x<=i+t && x>= i-t){
System.out.print("Test OK");
} else {
System.out.println("Test nicht OK");
}
}
}
}
Dazu ein Interface mit der Methode convert:
Java:
package de.hszg.currency;
/**
* Schnittstelle für CurrencyEnum und CurrencyTest
* @author Steffen Kulke
*/
interface Currency {
public double convert(double amount, CurrencyEnum to);
public double getKurs();
public void convert();
}
Und schließlich meine gebastelte GUI:
Java:
package de.hszg.currency;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
/**
* Code für die Grafische Benutzeroberfläche
* @author Steffen Kulke
*/
public class Gui {
public static void main(String[] args) {
JFrame meinJFrame = new JFrame();
meinJFrame.setTitle("Währungsrechner 1.0");
JPanel panel = new JPanel();
String comboBoxListe[] = {"EUR", "USD", "CAD","AUD"};
JComboBox währungsAuswahl1 = new JComboBox(comboBoxListe);
JComboBox währungsAuswahl2 =new JComboBox(comboBoxListe);
//Textfelder
final JTextField betrag1 = new JTextField("", 10);
final JTextField betrag2 = new JTextField("", 10);
//Menüleiste mit Untermenü
JMenuBar bar = new JMenuBar();
JMenu datei = new JMenu("Datei");
JMenu einstellungen = new JMenu("Einstellungen");
JMenu hilfe = new JMenu("?");
JMenuItem beenden = new JMenuItem("Beenden");
JMenuItem about = new JMenuItem("Informationen");
JMenuItem ändern = new JMenuItem("Wechselkurs ändern");
//Was zum Frame hinzugefügt wird
panel.add(währungsAuswahl1);
panel.add(betrag1);
panel.add(währungsAuswahl2);
panel.add(betrag2);
meinJFrame.add(panel);
meinJFrame.setJMenuBar(bar);
//Menü erstellen
bar.add(datei);
bar.add(einstellungen);
bar.add(hilfe);
datei.add(beenden);
hilfe.add(about);
einstellungen.add(ändern);
meinJFrame.pack();
//Macht den Frame sichtbar
meinJFrame.setVisible(true);
//Actionlistener
betrag1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
}
});
betrag2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
}
});
about.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Copyright © 2014 by Steffen Kulke! All rights reserved!", "Währungsrechner 1.0", JOptionPane.INFORMATION_MESSAGE);
}
});
beenden.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
}
}
Nun zu meinem Problem: Ich möchte nun, wenn ich im linken Textfeld (in meinem Fall JTextfield betrag1) eine Zahl eingebe, dass diese umgerechnet und im rechten Textfeld (JTextfield betrag2) ausgegeben wird. Dabei soll es so umgerechnet werden wie es in den ComboBoxen ausgewählt wird.
Wie mache ich denn das nun? Wahrscheinlich auch mit einem ActionListener, aber ich habe kein Plan WIE ich das machen soll....:shock: