# Wenn Button gedrückt wird, Ausgabe auf Display. Wie zu machen?



## Neroo (8. Juli 2005)

Hi,

ich hab wirklich ein Anfänger Problem. So soll ich für die Schule einen Taschenrechner programmieren (+,-,*,/). Nun steh ich schon vor dem ersten Problem, nämlich wie Programmier ich das wenn ich auf den Button1 (bt1) drücke auf dem Display (tfDisplay1) die Zahl 1 erscheint? Ich danke für eure Hilfe sehr!

Gruß,
Neroo


----------



## elmato (8. Juli 2005)

Neroo hat gesagt.:
			
		

> Hi,
> 
> ich hab wirklich ein Anfänger Problem. So soll ich für die Schule einen Taschenrechner programmieren (+,-,*,/). Nun steh ich schon vor dem ersten Problem, nämlich wie Programmier ich das wenn ich auf den Button1 (bt1) drücke auf dem Display (tfDisplay1) die Zahl 1 erscheint? Ich danke für eure Hilfe sehr!
> 
> ...



Schau dir das mal an http://www.tutorials.de/tutorials209918.html
und/oder durchsuche das Forum mal nach Taschenrechner
mfg


----------



## Neroo (8. Juli 2005)

sorry das bringt mich aber nicht richtig weiter


----------



## elmato (8. Juli 2005)

Wieso? Das ist doch genau nach was du gefragt hast und wenn dir das nicht hilft dann poste doch mal bitte ein wenig Code von dir damit wie dir helfen koennen...


----------



## Neroo (8. Juli 2005)

```
bt1.addActionListener(this);
		bt2.addActionListener(this);
		bt3.addActionListener(this);
		bt4.addActionListener(this);
		bt5.addActionListener(this);
		bt6.addActionListener(this);
		bt7.addActionListener(this);
		bt8.addActionListener(this);
		bt9.addActionListener(this);
		bt0.addActionListener(this);
		btPunkt.addActionListener(this);
		btPlus.addActionListener(this);
		btMinus.addActionListener(this);
		btMal.addActionListener(this);
		btGeteilt.addActionListener(this);
		btErgebniss.addActionListener(this);
		
		//Sichtbarkeit des Fensters
		this.setVisible(true);
		
		//schließen des Fensters
		this.addWindowListener(new WindowAdapter()
				{public void windowClosing (WindowEvent evt)
				{System.exit(0);}});
		
			
				
	}

	/* (non-Javadoc)
	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
	 */
	public void actionPerformed(ActionEvent arg0)
```

so das war etwas vom Code. So nun hätte ich halt gerne das auf dem ersten Display die 1 erscheint wenn ich auf den Button 1 klicke. Nur wie programmier ich sowas?


----------



## elmato (8. Juli 2005)

aber ganau das stand doch in dem Code bzw. Link den ich gepostet hatte...

```
bt1.addActionListener(this);
bt1.setActionCommand("1");
bt2.addActionListener(this);
bt2.setActionCommand("2");
usw....
}
public void actionPerformed(ActionEvent e){
//ich weiss nicht was dein display ist aber ich gehe mal von einem textfeld aus..

deinTextfeld.setText(e.getActionCommand()):
}
```
damit erscheinen deine Zahlen auf dem Display. Achtung! +,-,*,/ erscheinen auch auf dem Display, du musst den Code noch ein wenig Modifizieren um das zu verhindern mit if/else Abfragen vor dem

```
deinTextfeld.setText(e.getActionCommand()):
```
mfg


----------



## Neroo (8. Juli 2005)

perfekt danke dir! Nun hab ich aber ein Problem nähmlich ich hab zwei Textfelder und wenn ich auf einen Rechnoperator klicke soll er die nächste Zahl in das zweite Textfeld schreiben. Mein Test sieht mom. so aus 
	
	
	



```
if (btest == false)
		{
			btPlus.setText(e.getActionCommand());
			btest = true;
		}
		
		else
		{
			btPlus.setText(e.getActionCommand());
			btest = false;
		}
```

leider meint er das man setText nicht bei einem Button anwenden kann. Hast du da auch vielleicht ein Tipp?


----------



## elmato (8. Juli 2005)

Also wenn du in ein 2. Textfeld schreiben moechtest warum willst du dann den Text vom Button aendern? Das macht doch keinen Sinn ;-)

```
//erzeuge eine Instanz Variable die du abfragst
private boolean wohinSollIchSchreiben = false;
...
...
public voi actionPerformed.......{
if(e.getActionCommand().equals("+") || e.getActionCommand().equals("-")...fuer *,/ auch noch){
wohinSollIchSchreiben == true;
}else if(wohinSollIchSchreiben == true){
anderesTextFeld.setText(e.getActionCommand());
}else if(wohinSollIchSchreiben != true){
textFeld.setText(e.getActioncommand()):
}else if(e.getActionCommand().equals("="){
wohinSollIchSchreiben = false;
}
}
```
ich hoffe das stimmt so, ich sollte aber eigentlich..
mfg


----------



## Neroo (10. Juli 2005)

Erstmal danke dir! NUn bekomm ich allerdings fehlermeldungen mom sieht es so aus:


```
if(e.getActionCommand().equals("+") || e.getActionCommand().equals("-")) {{{
			tfDisplay2 == true;
		}}}else if(tfDisplay2 == true){
			tfDisplay1.setText(e.getActionCommand());
			}else if(tfDisplay2 != true){
			tfDisplay1.setText(e.getActionCommand());
			}else if(e.getActionCommand().equals("=")){
			tfDisplay2 = false;
			}
```

beim unterstrichenen bringt er Fehermeldungen. Und sehe ich das richtig das ich tfDisplay als boolean und nicht mehr als TextField bei den Attributen eintragen muss?

PS: Das ist die Fehlermeldung: Cannot invoke setText(String) on the primitive type boolean


----------



## elmato (10. Juli 2005)

Sorry da sind mir ein paar Fehler unterlaufen..

```
if(e.getActionCommand().equals("+") || e.getActionCommand().equals("-")) {{{
			tfDisplay2 = true; //== ist ein vergleich was du brauchst ist natuerlich eine zuweisung also nur =
		}}}else if(tfDisplay2 == true){
			tfDisplay1.setText(e.getActionCommand());
			}else if(tfDisplay2 != true){
			tfDisplay1.setText(e.getActionCommand());
			}else if(e.getActionCommand().equals("=")){
			tfDisplay2 = false;
			}
```
so sollte es laufen..


----------



## Neroo (10. Juli 2005)

Ich bekomme trotzdem diese Fehlermeldung: Cannot invoke setText(String) on the primitive type boolean. 

Wie muss ich das verstehen. Ìch hab keine Ahnung was ein primitive type boolean ist. tfDisplay habe ich bei den Attributen als: 
	
	
	



```
private boolean tfDisplay1 = false;
```
 eingesetzt.


----------



## elmato (10. Juli 2005)

aehm, ich sehe auch gerade das du versucht die Methode settext() fuer einen boolena aufzurufen so geht das natuerlich nicht, du musst diese Methode fuer ein Textfeld aufrufen der boolean wird nur gebraucht um feststellen zu koennen wohi geschrieben werden soll.....

```
f(e.getActionCommand().equals("+") || e.getActionCommand().equals("-")) {{{
			tfDisplay2 = true; //== ist ein vergleich was du brauchst ist natuerlich eine zuweisung also nur =
		}}}else if(tfDisplay2 == true){
			deinTextFeld1 .setText(e.getActionCommand());
			}else if(tfDisplay2 != true){
			deinTextFeld2 .setText(e.getActionCommand());
			}else if(e.getActionCommand().equals("=")){
			tfDisplay2 = false;
			}
```


----------



## Neroo (12. Juli 2005)

Ok das nächste Problem. Nämlich nun soll wen ich auf "=" Taste drücke das Ergebnis auf dem tfDisplay1 erscheinen. Kann mir jemand erklären wie es . und ob der Code bisher stimmt (hinsichtlich der Rechnung) . Ich bin für jeder Hilfe dankbar. Hier ist der Code und ja ich weiß das er schlimm ist  )


```
package taschenrechner;

import java.awt.*;
import java.awt.event.*;

public class Taschenrechner extends Frame implements ActionListener {
	//Attribute

	String sOperator;

	private boolean btest3 = false;

	private boolean btest = false;

	private boolean btest2 = false;

	private TextField tfDisplay1 = new TextField(15);

	private TextField tfDisplay2 = new TextField(15);

	private Label lbPunkt = new Label(".");

	private Label lbnewLabel1 = new Label();

	private Label lbnewLabel2 = new Label();

	private Label lbnewLabel3 = new Label();

	private Label lbnewLabel4 = new Label();

	private Label lbnewLabel5 = new Label();

	private Label lbnewLabel6 = new Label();

	private Button bt1 = new Button("1");

	private Button bt2 = new Button("2");

	private Button bt3 = new Button("3");

	private Button bt4 = new Button("4");

	private Button bt5 = new Button("5");

	private Button bt6 = new Button("6");

	private Button bt7 = new Button("7");

	private Button bt8 = new Button("8");

	private Button bt9 = new Button("9");

	private Button bt0 = new Button("0");

	private Button btPunkt = new Button(".");

	private Button btPlus = new Button("+");

	private Button btMinus = new Button("-");

	private Button btMal = new Button("*");

	private Button btGeteilt = new Button("/");

	private Button btErgebnis = new Button("=");

	private Button btDelete = new Button("DELETE");

	//Konstruktur
	public Taschenrechner() {
		//Größe des Fensters
		this.setSize(500, 500);

		//Hintergrundfarbe
		this.setBackground(Color.WHITE);

		//Title erstellen
		this.setTitle("Taschenrechner");

		//Layout
		this.setLayout(new GridLayout(6, 4, 10, 10));

		//Dialogelemente
		this.add(tfDisplay1);
		this.add(lbPunkt);
		this.add(tfDisplay2);
		this.add(lbnewLabel1);
		this.add(bt1);
		this.add(bt2);
		this.add(bt3);
		this.add(btPlus);
		this.add(bt4);
		this.add(bt5);
		this.add(bt6);
		this.add(btMinus);
		this.add(bt7);
		this.add(bt8);
		this.add(bt9);
		this.add(btMal);
		this.add(bt0);
		this.add(lbnewLabel2);
		this.add(btPunkt);
		this.add(btGeteilt);
		this.add(lbnewLabel4);
		this.add(btDelete);
		this.add(lbnewLabel6);
		this.add(btErgebnis);

		//TextFields nicht editierbar machen
		tfDisplay1.setEditable(false);
		tfDisplay2.setEditable(false);

		//Buttons uebertragen
		bt1.addActionListener(this);
		bt2.addActionListener(this);
		bt3.addActionListener(this);
		bt4.addActionListener(this);
		bt5.addActionListener(this);
		bt6.addActionListener(this);
		bt7.addActionListener(this);
		bt8.addActionListener(this);
		bt9.addActionListener(this);
		bt0.addActionListener(this);
		btPunkt.addActionListener(this);
		btPlus.addActionListener(this);
		btMinus.addActionListener(this);
		btMal.addActionListener(this);
		btGeteilt.addActionListener(this);
		btErgebnis.addActionListener(this);

		//Sichtbarkeit des Fensters
		this.setVisible(true);

		//Schließen des Fensters
		this.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent evt) {
				System.exit(0);
			}
		});

	}

	public void actionPerformed(ActionEvent e) {

		String sTest = new String();
		String sTest2 = new String();
		String sErgebniss = new String();
		double dErgebnis;
		double dTest;
		double dTest2;
		double dErgebnis2;

		if (e.getActionCommand().equals("+")
				|| e.getActionCommand().equals("-")
				|| e.getActionCommand().equals("/")
				|| e.getActionCommand().equals("*")) {

			if (btest3 == false) {
				btest2 = true;
				sOperator = e.getActionCommand();
				btest3 = true;
			}

			{
				btest2 = true;
				sOperator = e.getActionCommand();
			}

		} else if (btest2 == true) {
			sTest = tfDisplay2.getText();
			tfDisplay2.setText(sTest + e.getActionCommand());
		} else if (btest2 != true) {
			sTest = tfDisplay1.getText();
			tfDisplay1.setText(sTest + e.getActionCommand());
		} else if (e.getActionCommand().equals("=")) {
			btest2 = false;

			sTest = tfDisplay1.getText();
			sTest2 = tfDisplay2.getText();

			dTest = Double.parseDouble(sTest);
			dTest2 = Double.parseDouble(sTest2);

			if (sOperator == "+") {
				dErgebnis = dTest + dTest2;
			}
			if (sOperator == "-") {
				dErgebnis = dTest - dTest2;
			}
			if (sOperator == "*") {
				dErgebnis = dTest * dTest2;
			}
			if (sOperator == "/") {
				dErgebnis = dTest / dTest2;
			}

		}
	}
}
```


----------

