2 TextFields + 1 KeyListener = Problem :(

Status
Nicht offen für weitere Antworten.

Oliver_G

Neues Mitglied
Hi,
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;
	}
	
	
}
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:
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!" );
				   	    }
}
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 :)
 

The_S

Top Contributor
mit ev.getSource() bekommst du das Objekt zurück, welches das Event ausgelöst hat. Dann kannst du entsprechend reagieren (hoffe mal das ist das was du wolltest ... ???:L )
 

Murray

Top Contributor
Lagere die Implementierung des KeyListeners in eine eigene Klasse aus. Der Klasse spendierst Du einen Konstruktor mir einem TextField-Parameter; im Konstrukor speicherst Du dieses TextField in einer Variablen. Dann kannst Du zwei Instanzen dieses Listeners für die beiden TextFields erzeugen; in keyReleased holst Du Dir dann den Text aus dem im Konstruktor übergebenen TextField.

//EDIT: wenn die beiden TextFields wirklich vollständig gleich behandelt werden sollen, ist Hobbits Ansatz einfacher
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S BufferedReader TextFields Import Java Basics - Anfänger-Themen 5
S Erste Schritte TAB-Wechsel zwischen TextFields Java Basics - Anfänger-Themen 1
andresendo Textfields aus while Schleife auslesen... Java Basics - Anfänger-Themen 7
M Zufälliges Auswählen von Textfields Java Basics - Anfänger-Themen 5
A Textfields + Labels in GridLayout(3,2) Java Basics - Anfänger-Themen 2
J Leere Textfields automatisch mit einem Wert ausfüllen Java Basics - Anfänger-Themen 3
D textfields erzeugen lassen Java Basics - Anfänger-Themen 7
P Wie kann ich meine Keylistener Klasse unterscheiden lassen, von welcher "Quelle" der Input kommt? Java Basics - Anfänger-Themen 2
B Bild per KeyListener drehen Java Basics - Anfänger-Themen 1
javalux123 Keylistener auf andere Fenster Java Basics - Anfänger-Themen 3
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
M KeyListener reagiert nicht Java Basics - Anfänger-Themen 4
M Mit KeyListener Farbe von Label ändern Java Basics - Anfänger-Themen 13
N Java Keylistener Java Basics - Anfänger-Themen 2
B KeyListener funkioniert nicht Java Basics - Anfänger-Themen 2
F KeyListener Java Basics - Anfänger-Themen 3
S Erste Schritte 2D Grafik Probleme mit KeyListener. Java Basics - Anfänger-Themen 18
G KeyListener und JButton vertragen sich nicht Java Basics - Anfänger-Themen 1
J-Gallus Keylistener verstehen Java Basics - Anfänger-Themen 17
S Keylistener Java Basics - Anfänger-Themen 16
S Keylistener im Grafikfenster Java Basics - Anfänger-Themen 3
H Mouse- und KeyListener Probleme? Java Basics - Anfänger-Themen 5
N KeyListener in Thread Java Basics - Anfänger-Themen 0
LexeB4F for schliefe in KeyListener Java Basics - Anfänger-Themen 3
R KeyListener auslagern Java Basics - Anfänger-Themen 3
J KeyListener aus anderer Klasse bereitet Probleme Java Basics - Anfänger-Themen 1
Z KeyListener funktioniert nicht? Weshalb? Java Basics - Anfänger-Themen 8
T KeyListener Java Basics - Anfänger-Themen 2
Gfreak23 Input/Output KeyListener funktioniert auf Laptop nicht allerdings auf Tower-PC Java Basics - Anfänger-Themen 8
J KeyListener - mal wieder... Java Basics - Anfänger-Themen 2
TheSorm KeyListener Problem Java Basics - Anfänger-Themen 4
M KeyListener Java Basics - Anfänger-Themen 3
S KeyListener/ActionListener/paint()/repaint() Java Basics - Anfänger-Themen 3
D KeyListener nicht mehr aktiv nach ActionPerformed Java Basics - Anfänger-Themen 2
C Mehrere Tasten beim KeyListener gleichzeitig lesen Java Basics - Anfänger-Themen 2
L Input/Output Java 3D mit KeyListener Java Basics - Anfänger-Themen 1
S KeyListener reagiert nicht. Java Basics - Anfänger-Themen 4
L KeyListener ohne textfeld Java Basics - Anfänger-Themen 4
J KeyListener,MouseListener,MouseMotionListener und static Java Basics - Anfänger-Themen 7
P Klassen Bei KeyEvent in KeyListener den Tastendruck abbrechen Java Basics - Anfänger-Themen 5
B KeyListener als allgemeine Methode Java Basics - Anfänger-Themen 5
H KeyListener auf ganzes Fenster setzen Java Basics - Anfänger-Themen 14
0 KeyListener ausserhalb der Applikation Java Basics - Anfänger-Themen 5
G KeyListener Java Basics - Anfänger-Themen 4
D KeyListener und ActionListener Problem Java Basics - Anfänger-Themen 6
J KeyListener funtioniert nicht! Java Basics - Anfänger-Themen 3
J KeyListener Java Basics - Anfänger-Themen 11
P Input/Output KeyListener reagiert nicht Java Basics - Anfänger-Themen 4
G KeyListener, Fokus Java Basics - Anfänger-Themen 8
K Input/Output KeyListener funktioniert nicht Java Basics - Anfänger-Themen 3
A Input/Output Keylistener Aktiv schalten Java Basics - Anfänger-Themen 8
J keyListener - Genau 1 Aktion soll bei 1 Tastenausdruck ausgeführt werden Java Basics - Anfänger-Themen 11
S KeyListener Java Basics - Anfänger-Themen 2
A Erste Schritte Problem mit KeyListener Java Basics - Anfänger-Themen 6
Maxim6394 KeyListener geht nicht Java Basics - Anfänger-Themen 15
A Wie KeyListener adden? Java Basics - Anfänger-Themen 15
Maxim6394 KeyListener funktioniert nicht Java Basics - Anfänger-Themen 20
U KeyListener StackOverflowError Java Basics - Anfänger-Themen 2
W KeyListener auf Applet mit Runnable Java Basics - Anfänger-Themen 4
M Apfel-Spiel KeyListener Java Basics - Anfänger-Themen 33
J KeyListener (keyTyped) funktioniert nicht Java Basics - Anfänger-Themen 9
Luk10 KeyListener Java Basics - Anfänger-Themen 13
S KeyListener aus anderer Klasse hinzufügen Java Basics - Anfänger-Themen 19
P KeyListener im Applet Java Basics - Anfänger-Themen 2
S KeyListener-Anwendung Java Basics - Anfänger-Themen 7
O KeyListener funktioniert nur wenn er will Java Basics - Anfänger-Themen 2
A KeyListener funzt ned Java Basics - Anfänger-Themen 6
D KeyListener, Unterscheidung Groß/Kleinbuchstaben Java Basics - Anfänger-Themen 3
S KeyListener als class? Java Basics - Anfänger-Themen 4
F Applet mit KeyListener, "Alt"-Taste und Konflikt mit Browser Java Basics - Anfänger-Themen 2
P KeyListener Java Basics - Anfänger-Themen 2
S KeyListener für einfaches Programm Java Basics - Anfänger-Themen 3
S KeyListener aktiv auch wenn minimiert? Java Basics - Anfänger-Themen 4
Z Globaler Keylistener Java Basics - Anfänger-Themen 2
V KeyListener Beispiel Java Basics - Anfänger-Themen 13
T canvas killt KeyListener Java Basics - Anfänger-Themen 2
Das Brot Nach .add(JRadioButton) funktioniert der KeyListener nicht mehr Java Basics - Anfänger-Themen 2
J Keylistener aber wie jTextField auswahl? Java Basics - Anfänger-Themen 3
D KeyListener, nichts passiert Java Basics - Anfänger-Themen 6
U ActionListener und KeyListener - KeyListener funktioniert nicht Java Basics - Anfänger-Themen 2
D Keylistener zu langsam Java Basics - Anfänger-Themen 7
C Problem mit JPopupMenu, JTextField und Keylistener Java Basics - Anfänger-Themen 2
G Keylistener in einer Schleife Java Basics - Anfänger-Themen 9
M problem mit keylistener Java Basics - Anfänger-Themen 2
M TabbedPane: KeyListener funktioniert nicht mehr Java Basics - Anfänger-Themen 8
N KeyListener ohne GUI? Java Basics - Anfänger-Themen 5
M KeyListener Java Basics - Anfänger-Themen 3
T KeyListener wird nicht ausgelöst Java Basics - Anfänger-Themen 6
O KeyListener Java Basics - Anfänger-Themen 8
Developer_X KeyListener ohne JFrame Java Basics - Anfänger-Themen 13
H KeyListener Java Basics - Anfänger-Themen 4
Developer_X KeyListener Actions (hat mit Java3D zu tun) Java Basics - Anfänger-Themen 20
H KeyListener funktioniert nicht Java Basics - Anfänger-Themen 8
Developer_X JFrame soll KeyListener adden Java Basics - Anfänger-Themen 32
F Keylistener Java Basics - Anfänger-Themen 12
hdi KeyListener : keyTyped() nicht nutzbar? Java Basics - Anfänger-Themen 1
StickToFreak Runnable + KeyListener? Java Basics - Anfänger-Themen 32
dl85hej Keylistener Java Basics - Anfänger-Themen 16
H KeyListener will nicht reagieren Java Basics - Anfänger-Themen 5
R Fehlersuche - KeyListener, KeyAdaper - Nichts Klappt! Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben