# Button ein Wert zuweisen



## Gh0st (27. Feb 2014)

Hallo ihr Lieben. 

Ich hätte eine kleine frage an euch !
Und zwar wie ich ein Button ein Wert zuweißen kann, dass wen er geklickt wird er den Wert in zb ein Text Field einlesen soll.

Ich versuch ein Taschenrechner App aus Lern zwecken zu programmieren
aber haenge grad auf dem schlauch !

Also ich erstell mehrere Buttons (0-9) + (Mathematische Operatoren) 
Nur wie kann ich ihn ein Wert zuweißen, dass wen ich auf beispielsweiße Button mit der 1 drücke dan in TextField auch 1 drinn steht & mit der Zahl dan rechnen?
Ich hab zwar mit *button1.setActionCommand("1");* versucht aber die funktion .setActionCommand scheints i.wie bei Java-Application nicht zu geben xD
Jemand eine Idee wie ich das Problem sonst loesen koennte?
Denkanstoesse, Tutorials o.ä.

vielen Dank im vorraus !


----------



## KingOnline1 (28. Feb 2014)

Hallo,

(sorry, aber ich habe erst jetzt gesehen, dass das im "Mobile Geräte" Forum gepostet wurde. Ich habe das jetzt auf der Basis von Eclipse geschrieben. Mal schauen, vielleicht gehts ja doch. Könnte ja gleich oder zumindest ähnlich sein.)

wenn du einen JButton erstellst kannst ihm gleich einen "Aufdruck" geben, der auch später auf deiner GUI angazeigt wird. Du erstellst dann noch dein JTextField.


```
JTextField display = new JTextField("");    // du setzt anführungsstriche rein, dass der Text im JTextField nicht null ist, damit später etwas hinzugefügt (konkateniert) werden kann.
JButton buttonOne = new JButton("1");
```

Man bezeichnet eine Variable beispielsweise nicht "button1". Mit "buttonOne" ist die Leserlichkeit gegeben. Das nur am Rande.

Jetzt hast du dein Objekt erstellt. Dem Button wurde aber kein Wert zugewiesen, er wurde lediglich benannt oder mit einem Aufkleber versehen.

Um den Button jetzt "anzusteuern" gibt es in Java die sogenannten Listener. Wenn ein Button mit der Maus (Curser) gedrückt wird der ActionListener verwendet. Da würde ich an deiner Stelle eine innere private Klasse schreiben, die das Interface ActionListener implementiert. Du importierst die Methode und implementierst sie. Mach dafür eine If-Abfrage. Du greifst auf das Objekt display zu und fügst dem die "1" hinzu.


```
private class ButtonHandler implements ActionListener {
		@Override
		public void actionPerformed(ActionEvent e) {
			if (e.getSource() == buttonOne) {
				display.setText(display.getText() + "1");
			}
		}
	}
```

Du rufst hier die Methode setText() auf display auf. Den zu setzenden Text bekommst du durch get Text und durch das Konkatenieren wird die "1" als weitere Zahl zum bereits bestehenden Text hinzugefügt.

Das machst du natürlich für alle Zahlen.

Wenn du dann beim Ausführen deines Programms denkst, warum das nicht geht. Ich drück den Button und es geschieht nichts, dann liegt das daran, dass du dem Button erst den ActionListener adden musst und das geht mit: 


```
buttonOne.addActionListener(new ButtonHandler());
```

Danach fügst du noch die Buttons deinem JPanel (oder was du dafür vorgesehen hast) hinzu und es müsste gehen.

Ich hoffe ich konnte dir ein Stück weit bei deiner Aufgabe helfen.


----------



## JavaMeister (28. Feb 2014)

Wie oft willst du das Thema starten???


----------



## kaoZ (28. Feb 2014)

Wirf mal einen Blick in den anderen Thread den du eröffnet hast , ich habe dazu schon was geschrieben.

[EDIT]
Der Listener bzw das Interface welches du suchst heißt unter Android *OnClickListener* nicht ActionListener
[/EDIT]


----------



## Gh0st (28. Feb 2014)

Thanks für die vielen Antworten.

Ja, in anderen Forum hab ich das nur veröffentlich, da mein PC gebuggt hat & mir hier den Beitrag nicht gezeigt hat das es gepostet wurde, sorry.

KingOnline1
: Ja, dass mit der Namensgebung war nur aus Beispiel gedacht :-D

Kaoz
: Ok, werde es sofort machen, vielen dank für den Post


----------



## KingOnline1 (28. Feb 2014)

Jo habs versucht


----------

