Hi,
zuerst einmal der Source-Code des kleines Währungsrechners, an dem ich gerade arbeite. Ich hoffe man blickt durch
So funktioniert alles richtig... bei dem einen TextField (eingabe). Es werden nur Zahlen angenommen und bei Buchstabeneingabe wird der Text von Eingabe gelöscht und es wird eine Nachricht ausgegeben.
Das Programm soll aber auch auf gleiche Weise das TextField 'kurs' überwachen (im Code auskommentiert), was für mich ein Problem darstellt.
Wenn man in 'kurs' aktiv ist kann man ja nicht zeitgleich auch im anderen TextField aktiv sein. Also so geht das dann nicht:
Führt zu Fehlermeldungen... Ist ja auch eigentlich logisch. Auch Catches hintereinander zu platzieren bringt nichts.
Hat jemand ne Idee, wie ich das Problem (mit einfachen Mitteln) lösen kann?
Gruß,
Olli
zuerst einmal der Source-Code des kleines Währungsrechners, an dem ich gerade arbeite. Ich hoffe man blickt durch
Code:
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
import java.lang.Object;
public class Rechner extends Applet implements KeyListener
{
TextField eingabe, kurs;
String eingabestring, kursstring;
Label ausgabe;
Button dm, dollar, yen, reset, eigkurs;
Mathematik Rechenoperation;
double ergebnis;
public void init()
{
setLayout(new GridLayout(4,2));
eingabe = new TextField(10);
eingabe.addKeyListener(this);
ausgabe = new Label("0.000000");
dm = new Button("Euro -> DM");
dollar = new Button("Euro -> Dollar");
yen = new Button("Euro -> Yen");
reset = new Button (" Reset ");
eigkurs = new Button (" Euro -> ? -> ");
kurs = new TextField(10);
// kurs.addKeyListener(this);
add(eingabe);
add(ausgabe);
add(dm);
add(dollar);
add(yen);
add(reset);
add(eigkurs);
add(kurs);
}
public void keyReleased(KeyEvent ev)
{
try {
double zahl = Double.parseDouble(eingabe.getText());
}
catch( Exception e) {
eingabe.setText("");
// kurs.setText("");
System.err.println( "Nur Zahlen erlaubt!" );
}
}
public void keyTyped(KeyEvent ev) { }
public void keyPressed(KeyEvent ev) { }
public boolean action(Event event, Object eventobject)
{
if ((event.target==dm))
{
eingabestring = eingabe.getText();
Rechenoperation = new Mathematik();
ergebnis = Rechenoperation.dm(eingabestring);
ausgabe.setText(ergebnis + " DM");
return true;
}
if ((event.target==dollar))
{
eingabestring = eingabe.getText();
Rechenoperation = new Mathematik();
ergebnis = Rechenoperation.dollar(eingabestring);
ausgabe.setText(ergebnis + " Dollar");
return true;
}
if ((event.target==yen))
{
eingabestring = eingabe.getText();
Rechenoperation = new Mathematik();
ergebnis = Rechenoperation.yen(eingabestring);
ausgabe.setText(ergebnis + " Yen");
return true;
}
if ((event.target==reset))
{
eingabe.setText("");
ausgabe.setText("");
kurs.setText("");
return true;
}
if ((event.target==eigkurs))
{
eingabestring = eingabe.getText();
kursstring = kurs.getText();
Rechenoperation = new Mathematik();
ergebnis = Rechenoperation.eigkurs(eingabestring, kursstring);
ausgabe.setText("" + ergebnis);
return true;
}
return true;
}
}
class Konverter
{
public static double convert(String input)
{
return Double.parseDouble(input);
}
}
class Mathematik
{
String eingabestring;
String kursstring;
double dm(String eingabestring)
{
double double1 = Konverter.convert(eingabestring);
return double1*(1.95583);
}
double dollar(String eingabestring)
{
double double1 = Konverter.convert(eingabestring);
return double1*(1.21);
}
double yen(String eingabestring)
{
double double1 = Konverter.convert(eingabestring);
return double1*(141.47);
}
double eigkurs(String eingabestring, String kursstring)
{
double double1 = Konverter.convert(eingabestring);
double double2 = Konverter.convert(kursstring);
return double1*double2;
}
}
Das Programm soll aber auch auf gleiche Weise das TextField 'kurs' überwachen (im Code auskommentiert), was für mich ein Problem darstellt.
Wenn man in 'kurs' aktiv ist kann man ja nicht zeitgleich auch im anderen TextField aktiv sein. Also so geht das dann nicht:
Code:
public void keyReleased(KeyEvent ev)
{
try {
double zahl1 = Double.parseDouble(eingabe.getText());
double zahl2 = Double.parseDouble(kurs.getText());
}
catch( Exception e) {
eingabe.setText("");
kurs.setText("");
System.err.println( "Nur Zahlen erlaubt!" );
}
}
Hat jemand ne Idee, wie ich das Problem (mit einfachen Mitteln) lösen kann?
Gruß,
Olli