Listener Problem

Status
Nicht offen für weitere Antworten.

mobile

Bekanntes Mitglied
Hi Leute,

programmiere hier grade einen kleinen Taschenrechner. Habe nun folgendes Problem. Ich habe jetzt die Zahlen als Button eingefügt. Nun brauche ich aber ein Listener mit dem ich ausweten kann, welcher Button nun gedrückt wurde. Logisch, drücke ich 1 soll in meinem JTextField die 1 erscheinen usw. Nun will ich nur nicht für jeden Button einen eigenen Listener schreiben oder muss ich das?

Wie könnte man das machen, dass man mitbekommt, welcher Button gedrückt wurde?

Danke für eure Hilfe!
 
S

SlaterB

Gast
event.getSource() ist der Button und dann könntest ein Array der 10 Buttons durchlaufen um den Index = die Zahl herauszufinden,
oder wie auch immer,

ein Button ist aber viel viel größer als ein Listener, wäre nicht schlimm, da einen Listener anzulegen,
wobei du es da wiederum organisatorisch auch nicht viel leichter hast
 

mobile

Bekanntes Mitglied
ja hilft schon mal weiter. Sieht bei mir nur etwas anders aus. Komme da grad nich weiter.

bei mir ist alles in der Klasse Window, mal das wichtigste

Code:
public class Window extends JFrame {
	//TextField fuer die Eingabe
	JTextField anzeige = new JTextField("");
	//Buttons für die Eingabe
	JButton[] b = new JButton[16];

//....

/**Listener für die zahlen Buttons*/
	public class Zahl implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			anzeige.setText("");
			if (e.getSource() == b[0]) {
				anzeige.setText("1");
			}
			if (e.getSource() == b[1]) {
				anzeige.setText("2");
			}
			if (e.getSource() == b[2]) {
				anzeige.setText("3");
			}
			if (e.getSource() == b[4]) {
				anzeige.setText("4");
			}
			if (e.getSource() == b[5]) {
				anzeige.setText("5");
			}
			if (e.getSource() == b[6]) {
				anzeige.setText("6");
			}
			if (e.getSource() == b[8]) {
				anzeige.setText("7");
			}
			if (e.getSource() == b[9]) {
				anzeige.setText("8");
			}
			if (e.getSource() == b[10]) {
				anzeige.setText("9");
			}
			if (e.getSource() == b[13]) {
				anzeige.setText("0");
			}	             
		}
	}

//...Im Konstrukor
//...
//Anlegen der ersten Zahlen Reihe in p[1]
		b[0] = new JButton("1");
		b[1] = new JButton("2");
		b[2] = new JButton("3");
		b[3] = new JButton("+");
//usw.
// Hier will ich jeden Button beim Listener anmelden
//Buttons bei Listener anmelden
		for(short s = 0; s < b.length; s++) {
			b[s].addActionListner(this);
		}

Die Buttons sind bei mir in einem Array gespeichert.

Jetzt komme ich aber irgendwie nicht weiter!
 

Leroy42

Top Contributor
timkon hat gesagt.:
Jetzt komme ich aber irgendwie nicht weiter!
Ein Taschenrechner zu simulieren ist für einen Anfänger keine
leichte Aufgabe. Mach dir erst mal einen Plan, was bei welchem Tastendruck
in welchem Zustand des Rechners geschen soll.

Zustand 0:
"0"..."9": Anhängen des Zeichens in deinem Display.
"+" : Wechsel in Zustand "+" und merken der insgesamt eingegebenen Zahl
"-" : Wechsel in Zustand "-" und merken der insgesamt eingegebenen Zahl
...

Zustand "+":
"0"..."9": Anhängen des Zeichens in deinem Display.
"+": addieren des gemerkten Operands und der aktuell eingegebenen Zahl und darstellen im Display
...
...
...

Das ganze benötigt schon einiges an Vorarbeit (gedankliche, schriftlich, Kein Programmieren)
 

mobile

Bekanntes Mitglied
ja so Gednklich habe ich mir das schon überlegt, so ähnlich wie das grade beschrieben hast. Das sollte schon passen. Nur wie bekomme ich jetzt den Button raus?

habe oben beim Listener noch extends WindowAdapter vergessen. jetzt kann ich die Buttons so anmelden,
Code:
b[1].addActionListener(new Zahl());

aber das is ja nich grad Sinn der Sache!
 

mobile

Bekanntes Mitglied
Hab da aber noch mal kurz ne Frage. Wie könnte man das denn anstellen, dass die Rechenregeln, Punkt vor Strich usw eingehalten werden? Und wie kann ich die Eingabe in meinem TextField von hinten anstatt von vorne beginnen?
 

Marco13

Top Contributor
Um die Zahl hinten anzhängen kannst du einfach
Code:
anzeige.setText(anzeige.getText()+"2");
machen.
Und die erste Frage... genau DAS war Teil der Vorarbeit, die Leroy42 angesprochen hat :wink: Zum Glück kann ein Taschenrechner nicht sooo kompliziert werden (solange du nicht Klammern eingeben können willst, oder sogar komplette Formeln). Versuche, allgemeine Regeln aufzustellen:
Wenn man die "+"- oder "-"-Taste drückt: Was darf dann ausgerechnet werden?
Wenn man die "*"- oder "/"-Taste drückt: Was darf dann ausgerechnet werden?
Überleg' es dir an Beispielen:
Eingabe: 12+34+ ... Jetzt kann schon 12+34 ausgerechnet werden
Eingabe: 12+34* ... Jetzt kann 12+34 noch NICHT ausgerechnet werden
Eingabe: 12+34*56+ ... Jetzt kann 12+34*56 ausgerechnet werden
Eingabe: 12+34*56* ... Jetzt kann NUR 34*56 ausgerechnet werden...
Eingabe: 12+34*56*78+ ... Jetzt kann 12+34*56*78 ausgerechnet werden...
...
 
G

Guest

Gast
Ok, danke! Zum Glück muss er erstmal nur 2 Zahlen von typ float oder int rechnen können mit den Grundrechenarten. Das habe ich jetzt hinbekommen, is aber auch wirklich ne Lösung für 2 zahlen!
 

mobile

Bekanntes Mitglied
Also mit den Zahlen meinte ich nich das die hinten an die vorhandene angehänht werde, dass hab ich schon so gmacht. Meinte das anders. So wie es jetzt ist ist ja der Cursor ganz links im TextField und man beginnt auch links mit der Eingabe, wollte das jetzt ganz gerne so haben, dass man rechts mit der eingabe beginnt.
 

Marco13

Top Contributor
Also der Cursor soll rechts stehen, und die Zahl am besten auch, und jede Zahl soll das, was schon dasteht, nach links weiterschieben? Das ist kann ein bißchen eklig werden. Evtl. muß man da mit einem DocumentListener rumhantieren, vielleicht braucht man aber auch "nur" ein spezielles Document. Auf der Doku-Seite zu
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JTextField.html
ist ein Beispiel, wie man ein "selbsdefiniertes" Dokument erstellt - dort (bei insertString) könntest du evtl. dafür sorgen, dass alles ganz rechts eingefügt wird, aber ob das die saubereste Lösung ist (oder es mit einem DocumentListener nicht besser geht) müßte man durch API-Lesen und Testen herausfinden. Wenn du garnicht weiterkommst, sag nochmal bescheid.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
kaoZ Swing Architektonisches Problem / Listener / MVC AWT, Swing, JavaFX & SWT 14
H Problem mit dem Action listener.... AWT, Swing, JavaFX & SWT 2
El_Lobo Swing Problem bei Methodenaufruf in innerer Klasse bei Listener AWT, Swing, JavaFX & SWT 3
P JTabel Listener Problem / Editierbarkeit AWT, Swing, JavaFX & SWT 8
G 2 Panels, 2 Listener, 1 Problem AWT, Swing, JavaFX & SWT 2
F Problem mit Action Listener in privater inneren Klasse AWT, Swing, JavaFX & SWT 6
P SWT unelegant? Problem mit Listener.eventHandle(Event e) AWT, Swing, JavaFX & SWT 10
G Event / Listener problem AWT, Swing, JavaFX & SWT 9
S Problem mit Listener und Tab-Inhalt auslesen! AWT, Swing, JavaFX & SWT 8
V Listener Problem im JFrame AWT, Swing, JavaFX & SWT 4
padde479 MenuItem MouseEvent/-Listener AWT, Swing, JavaFX & SWT 5
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
G listener repaint() - verschiedene Darstellung AWT, Swing, JavaFX & SWT 24
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
K Warum genau hat man einen Listener, dann ein Event und was ist ein Adapter AWT, Swing, JavaFX & SWT 2
J Key-Listener in Java AWT, Swing, JavaFX & SWT 37
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
N JavaFX 1 Listener für mehrere ChoiceBoxen AWT, Swing, JavaFX & SWT 3
B Probleme Action Listener Taschenrechner AWT, Swing, JavaFX & SWT 27
M List Listener AWT, Swing, JavaFX & SWT 37
I AWT Listener während man in anderem Fenster ist AWT, Swing, JavaFX & SWT 4
U Funktionsweise Listener AWT, Swing, JavaFX & SWT 1
L TextField Listener AWT, Swing, JavaFX & SWT 13
K Nullpointer Combobox Listener AWT, Swing, JavaFX & SWT 2
L JavaFX Image im ImageView auf Scroll Listener reagieren AWT, Swing, JavaFX & SWT 5
Salo JTabel Selection listener Bsp. AWT, Swing, JavaFX & SWT 5
J JTable Selection Listener funktioniert nicht AWT, Swing, JavaFX & SWT 4
J Action Listener Rückgabewert AWT, Swing, JavaFX & SWT 14
MaxG. Swing JMenu einen Listener Hinzufügen AWT, Swing, JavaFX & SWT 25
L JavaFX Verbindung zwischen Beschreibung und Listener (Codebehind Klasse) AWT, Swing, JavaFX & SWT 4
T Swing Methode in Listener aufrufen AWT, Swing, JavaFX & SWT 3
S Swing Tabellen - Listener & richtige Row AWT, Swing, JavaFX & SWT 3
J Java -8 Action Listener für mehrere Buttons AWT, Swing, JavaFX & SWT 9
S Erste Schritte mit GUI - Fileverarbeitung, Listener,... AWT, Swing, JavaFX & SWT 10
M JButton - Listener AWT, Swing, JavaFX & SWT 1
R Swing Mehrere JTextFields mit einem Document Listener AWT, Swing, JavaFX & SWT 2
K JavaFX Focus Listener für gesamte Scene AWT, Swing, JavaFX & SWT 1
M Key Listener reagiert nicht AWT, Swing, JavaFX & SWT 4
F In Action Listener TextFields einlesen und prüfen. Abbruch bei falschen Eingaben. Wie mache ich das? AWT, Swing, JavaFX & SWT 2
M Listener funktioniert nicht AWT, Swing, JavaFX & SWT 7
S Swing JComboBox mit Listener aktualisieren AWT, Swing, JavaFX & SWT 13
elischa JFrame über mehrere JPanel und Listener AWT, Swing, JavaFX & SWT 17
llabusch Event Handling Listener spielt verrückt AWT, Swing, JavaFX & SWT 8
H org.eclipse.swt.widgets.Scale MouseRelease listener AWT, Swing, JavaFX & SWT 1
MaDDin-94 Swing Listener reagiert nicht immer AWT, Swing, JavaFX & SWT 2
A JLabel im Listener färben AWT, Swing, JavaFX & SWT 11
M Key-,... Listener funktioniert nicht immer AWT, Swing, JavaFX & SWT 2
P Event Handling Listener beim öffnen von einem JPopupMenu AWT, Swing, JavaFX & SWT 3
A Listener für JGTextField AWT, Swing, JavaFX & SWT 2
J Programmierstil: Kommunikation Listener und GUI AWT, Swing, JavaFX & SWT 3
B JTable Renderer / Listener AWT, Swing, JavaFX & SWT 7
M Swing JList Listener AWT, Swing, JavaFX & SWT 20
K Action Listener implementieren über Objekt AWT, Swing, JavaFX & SWT 14
E Listener AWT, Swing, JavaFX & SWT 3
M SWING Listener ohne Wirkung AWT, Swing, JavaFX & SWT 2
P Listener Auswahl Tabelle AWT, Swing, JavaFX & SWT 6
P JPanel- Listener durch JTextArea aktivieren AWT, Swing, JavaFX & SWT 8
J Swing dragging listener AWT, Swing, JavaFX & SWT 5
J Frame mit Button erstellen - Warum ist es nötig, Frame über Unterklasse zu erstellen? (Reg Listener) AWT, Swing, JavaFX & SWT 2
M Fenster schließen - Listener AWT, Swing, JavaFX & SWT 5
G SWT TreeViewer - drop listener austauschen AWT, Swing, JavaFX & SWT 2
S Action Listener in innerer Klasse ausführen. AWT, Swing, JavaFX & SWT 8
J Sinn eines Selection Listener AWT, Swing, JavaFX & SWT 5
M JList mit DefaultListModel und listener AWT, Swing, JavaFX & SWT 4
M comboBox Listener? AWT, Swing, JavaFX & SWT 2
T Listener in anderen Panel deaktivieren AWT, Swing, JavaFX & SWT 3
A Swing Suche Listener für beliebige Änderung an GUI Items/Controls AWT, Swing, JavaFX & SWT 8
T SWT: Listener auf einem Button reagiert nicht AWT, Swing, JavaFX & SWT 2
L Swing JTextField Content-Listener AWT, Swing, JavaFX & SWT 4
P AWT Wie kann mein listener den Inhalt eines anderen Textfelds ändern? AWT, Swing, JavaFX & SWT 10
M Ansätze zur Kombination mehrerer Listener für Interaktion AWT, Swing, JavaFX & SWT 19
C JLabel Listener auf Textänderung? AWT, Swing, JavaFX & SWT 5
M Mouse Wheel Listener reagiert mehrmals AWT, Swing, JavaFX & SWT 5
F SWT Button listener richtig erstellen AWT, Swing, JavaFX & SWT 2
S Wem füge ich welchen Listener hinzu? AWT, Swing, JavaFX & SWT 4
R Durch Listener lässt sich Programm nicht mehr ausführen AWT, Swing, JavaFX & SWT 4
T Callback vs. Event listener AWT, Swing, JavaFX & SWT 7
S Swing JTree und seine Listener... AWT, Swing, JavaFX & SWT 4
E JComboBox Listener AWT, Swing, JavaFX & SWT 2
AyKay SWT (alle) Listener bzw. ModifyEventListener entfernen AWT, Swing, JavaFX & SWT 2
S jTextField Listener AWT, Swing, JavaFX & SWT 7
E Listener, werte in andere Klasse übernehmen AWT, Swing, JavaFX & SWT 11
L Action listener in bestimmter spalte AWT, Swing, JavaFX & SWT 2
J AWT Action Listener etc. AWT, Swing, JavaFX & SWT 7
xehpuk Swing Listener für JPopupMenu AWT, Swing, JavaFX & SWT 3
F JCalendar mouseclick listener AWT, Swing, JavaFX & SWT 2
W AWT Listener bei TrayIcon AWT, Swing, JavaFX & SWT 2
K Swing Listener bei JPopupMenu AWT, Swing, JavaFX & SWT 9
E Swing JTextField Listener nach Update?! AWT, Swing, JavaFX & SWT 2
T TransformGroup Listener AWT, Swing, JavaFX & SWT 8
O Swing JTable Listener AWT, Swing, JavaFX & SWT 2
O Collection Listener AWT, Swing, JavaFX & SWT 6
L AWT Paint(g) im Listener aufrufen AWT, Swing, JavaFX & SWT 2
G JTree - Observer oder Listener? AWT, Swing, JavaFX & SWT 6
Avalarion SWT Listener auf Label oder Text Teile AWT, Swing, JavaFX & SWT 10
C Ermitteln ob JComponent einen Listener besitzt AWT, Swing, JavaFX & SWT 2
L JTextfield Listener AWT, Swing, JavaFX & SWT 3
C Listener Probleme AWT, Swing, JavaFX & SWT 6
N Listener für Variable AWT, Swing, JavaFX & SWT 4
C Swing Listener für TabPanel AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben