Taschenrechner -> ActionListener -> Problemos

Status
Nicht offen für weitere Antworten.
G

Garfield83

Gast
Hi Leute,
Hab ein Problem... und zwar:
Also wir haben jetzt in unserer Vorlesung ein wenig GUI durchgenommen.
Ich wollte jetzt mal zum Üben und Kennenlernen einen Taschenrechner implementieren.
Oook... soweit so gut. Also die Gui sieht schon so aus wie ich sie haben will.
Ich hab jetzt nur Probleme mit den Key Listeners. Also, das ganze ist bei uns im script irgendwie nicht so toll
beschrieben.
Vielleicht könnte mir jemand mal bei einer ganz leichten anweisung helfen.
Also wenn man die knöpfe b1 , bplus und b1 bgleich drückt dann sollte halt oben in der display leiste ( Also die display leiste ist die unter dem schriftzug, eine 2 erscheinen.
Ichhab jetzt schon mit inneren Klassen rumgespielt usw. aber komm nicht drauf wie das funktionieren soll.
Wäre wirklich sehr nett, wenn mir da vielleicht jemand helfen könnte.
Unten stehend der Code. Ist weniger als man denkt, durch de vielen buttons wurde der Konstruktor in der GUI Klasse halt rießig.

Code:
package Taschenrechnung;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class TaschenrechnerGUI extends JFrame  {
	
	private JTextField display;
	private JTextField eingabe;
	private JButton b1;
	private JButton b2;
	private JButton b3;
	private JButton b4;
	private JButton b5;
	private JButton b6;
	private JButton b7 ;
	private JButton b8;
	private JButton b9;
	private JButton b0 ;
	private JButton bsqrt;
	private JButton bpow;
	private JButton bPunkt;
	private JButton bmal ;
	private JButton bgeteilt ;
	private JButton bgleich ;
	private JButton bplus ;
	private JButton bminus ;

	public TaschenrechnerGUI(String name){
		this.display = new JTextField(30);
		display.setEditable(false);
		this.eingabe = new JTextField(30);
		eingabe.setEditable(true);
		this.setTitle(name);
		this.setSize(400,250);
		Container fensterInhalt = this.getContentPane();
		
		fensterInhalt.setLayout(new FlowLayout());
		//display
		JPanel displayPanel = new JPanel();
		displayPanel.setLayout(new GridLayout(2,1));
		JPanel displayLabel = new JPanel();
		JLabel dissi = new JLabel("Display");
		displayLabel.add(dissi,"South");
		displayPanel.add(displayLabel);
		displayPanel.add(display);
		fensterInhalt.add(displayPanel);
		// eingabe
		fensterInhalt.add(eingabe);
		// Buttons
		JPanel buttons = new JPanel();
		JPanel tasten = new JPanel();
		JPanel ops = new JPanel();
		buttons.setLayout(new GridLayout(4,3));
		ops.setLayout(new GridLayout(3,2));
		//Die einzelnen Knöpfe
		b1 = new JButton("1");
		b2 = new JButton("2");
		b3 = new JButton("3");
		b4 = new JButton("4");
		b5 = new JButton("5");
		b6 = new JButton("6");
		b7 = new JButton("7");
		b8 = new JButton("8");
		b9 = new JButton("9");
		b0 = new JButton("0");
		bsqrt = new JButton("sqrt");
		bpow = new JButton("^");
		bPunkt = new JButton(".");
		bmal = new JButton("*");
		bgeteilt = new JButton("/");
		bgleich = new JButton("=");
		bplus = new JButton("+");
		bminus = new JButton("-");
		
		buttons.add(b1);
		buttons.add(b2);
		buttons.add(b3);
		buttons.add(b4);
		buttons.add(b5);
		buttons.add(b6);
		buttons.add(b7);
		buttons.add(b8);
		buttons.add(b9);
		buttons.add(b0);
		buttons.add(bsqrt);
		buttons.add(bpow);
		
		ops.add(bmal);
		ops.add(bgeteilt);
		ops.add(bPunkt);
		ops.add(bgleich);
		ops.add(bminus);
		ops.add(bplus);
		
		tasten.add(buttons,"West");
		tasten.add(ops,"Ost");
		
		fensterInhalt.add(tasten);
		
		setVisible(true);
		// Hier die innere Klasse
		class Zuhoerer implements ActionListener  {
			public void actionPerformed(ActionEvent ereignis) {
				Object gedruecked = ereignis.getSource();
				
			}// end methode
		}// end innere ListenerKlasse
		ActionListener zuhoerer = new Zuhoerer();
		b1.addActionListener(zuhoerer);
		}
	public static void main(String[] args) {
		//Taschenrechner rechner = new Taschenrechner("Rechner");
		}
}

Code:
package Taschenrechnung;

public class Main {
	public static void main(String[] args){
		TaschenrechnerGUI rechner = new TaschenrechnerGUI("Taschenrechner");
		
	}

}

Code:
package Taschenrechnung;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;

public class Zuhoerer  {
	
	

	

	public void actionPerformed(ActionEvent ereignis) {
		Object gedruecked = ereignis.getSource();
		/*if(gedruecked==b1){
			System.out.println("1");
		}
		if(gedruecked==b2){
			System.out.println("2");
		}
		*/
	}// end methode

}
Code:
package Taschenrechnung;

import java.awt.event.ActionEvent;



public interface ActionListener {
	public void actionPerformed(ActionEvent e);
}

Also um noch mal mein Problem zusammenzufassen. Es geht mir darum, wie man im Endeffekt auf das Knopfdrücken reagiert.

MfG
Daniel
 
S

SlaterB

Gast
deine innere Klasse Zuhoerer ist schon ein ordentlicher ActionListener,
wenn man auf 1 drück, dann wird die Operation actionPerformed() ausgeführt,
merkt man noch nicht viel von,
hiermit schon eher:

Code:
 setVisible(true);
        // Hier die innere Klasse
        class Zuhoerer
            implements ActionListener
        {
            public void actionPerformed(ActionEvent ereignis)
            {
                JButton gedruecked = (JButton)ereignis.getSource();
                System.out.println(gedruecked.getText());
            }// end methode
        }// end innere ListenerKlasse
        ActionListener zuhoerer = new Zuhoerer();
        b1.addActionListener(zuhoerer);
        b2.addActionListener(zuhoerer);
        b3.addActionListener(zuhoerer);
        b4.addActionListener(zuhoerer);
        b5.addActionListener(zuhoerer);

--------------

das funktioniert also, nun weißt du wie es grundsätzlich geht und kannst auf die Tasten sinnvoll reagieren,
was bei so vielen Buttons ohne Organisation natürlich heftig wird,

eine Minimum-Hilfe: packe die 10 Zahl-Buttons in ein Array,
an Position 0 die 0, an 1 die 1 usw.
 
G

Guest

Gast
Also der Taschenrechner funktioniert jetzt ganz gut. Die Additionsfunktion habe ich mal implementiert.
Ich wollte die "rechenregeln" zuerst in eine andere klasse auslagern, aber hab das irgendwie ned hinbekommen und habs dann in inneren Klasse untergebracht..
(Glaub ich muss mal ne runde schlafen :autsch: )
Auf jeden fall :meld: ,
vielen Dank an SlaterB für die Hilfe :toll:

Hier ist mal der momentane code, falls wer sein Rechenbrett verlegt hat und sonst keine Addition berechnen kann :p
Code:
package Taschenrechnung;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class TaschenrechnerGUI extends JFrame  {
	
	private JTextField display;
	private JTextField eingabe;
	private JButton b1;
	private JButton b2;
	private JButton b3;
	private JButton b4;
	private JButton b5;
	private JButton b6;
	private JButton b7 ;
	private JButton b8;
	private JButton b9;
	private JButton b0 ;
	private JButton bsqrt;
	private JButton bpow;
	private JButton bPunkt;
	private JButton bmal ;
	private JButton bgeteilt ;
	private JButton bgleich ;
	private JButton bplus ;
	private JButton bminus ;
	private String input;
	private int inputSpeicher1;
	private int inputSpeicher2;
	private boolean doppelop = false;
	private boolean addition = false;
	
	//private Rechenregeln regeln;

	public TaschenrechnerGUI(String name){
		this.addition = addition;
		this.doppelop=doppelop;
		this.input="";
		this.inputSpeicher1 = 0;
		this.inputSpeicher2 = 0;
		this.display = new JTextField(30);
	//	this.regeln = regeln;
		display.setEditable(false);
		this.eingabe = new JTextField(30);
		eingabe.setEditable(true);
		this.setTitle(name);
		this.setSize(400,250);
		Container fensterInhalt = this.getContentPane();
		
		fensterInhalt.setLayout(new FlowLayout());
		//display
		JPanel displayPanel = new JPanel();
		displayPanel.setLayout(new GridLayout(2,1));
		JPanel displayLabel = new JPanel();
		JLabel dissi = new JLabel("Display");
		displayLabel.add(dissi,"South");
		displayPanel.add(displayLabel);
		displayPanel.add(display);
		fensterInhalt.add(displayPanel);
		// eingabe
		fensterInhalt.add(eingabe);
		// Buttons
		JPanel buttons = new JPanel();
		JPanel tasten = new JPanel();
		JPanel ops = new JPanel();
		buttons.setLayout(new GridLayout(4,3));
		ops.setLayout(new GridLayout(3,2));
		//Die einzelnen Knöpfe
		b1 = new JButton("1");
		b2 = new JButton("2");
		b3 = new JButton("3");
		b4 = new JButton("4");
		b5 = new JButton("5");
		b6 = new JButton("6");
		b7 = new JButton("7");
		b8 = new JButton("8");
		b9 = new JButton("9");
		b0 = new JButton("0");
		bsqrt = new JButton("sqrt");
		bpow = new JButton("^");
		bPunkt = new JButton(".");
		bmal = new JButton("*");
		bgeteilt = new JButton("/");
		bgleich = new JButton("=");
		bplus = new JButton("+");
		bminus = new JButton("-");
		
		buttons.add(b1);
		buttons.add(b2);
		buttons.add(b3);
		buttons.add(b4);
		buttons.add(b5);
		buttons.add(b6);
		buttons.add(b7);
		buttons.add(b8);
		buttons.add(b9);
		buttons.add(b0);
		buttons.add(bsqrt);
		buttons.add(bpow);
		
		ops.add(bmal);
		ops.add(bgeteilt);
		ops.add(bPunkt);
		ops.add(bgleich);
		ops.add(bminus);
		ops.add(bplus);
		
		tasten.add(buttons,"West");
		tasten.add(ops,"Ost");
		
		fensterInhalt.add(tasten);
		
		setVisible(true);
		// Hier die innere Klasse
		class Zuhoerer implements ActionListener  {
			
			
			public void actionPerformed(ActionEvent ereignis) {
				JButton gedruecked = (JButton)ereignis.getSource();
				// So, hier gehts jetzt ab!
				String knopfdruck =(gedruecked.getText());
				//ZEichenerkennung
				String zahlen = "0123456789";
				if( zahlen.indexOf(knopfdruck)>=0){
					input = input+ knopfdruck;
					display.setText(input);
					inputSpeicher1 = Integer.parseInt(input);
					doppelop = false;
					}// end if
				if( knopfdruck.equals("+")){
					if(doppelop==true){
					display.setText("ERROR");
					inputSpeicher1 =0 ;
					inputSpeicher2= 0;
					input = "";
					}
					else{
						input = "";
						inputSpeicher2 +=inputSpeicher1;
						display.setText("+");
						doppelop=true;
						addition = true;
					}
				}// end if +
				if( knopfdruck.equals("=")){
					if(addition){
						input ="";
						display.setText(""+(inputSpeicher1+inputSpeicher2));
						doppelop = true;
						addition= false;
					}
						
				}// end =
				
				
				
				
			}// end methode
		}// end innere ListenerKlasse
		ActionListener zuhoerer = new Zuhoerer();
		b1.addActionListener(zuhoerer); 
        b2.addActionListener(zuhoerer); 
        b3.addActionListener(zuhoerer); 
        b4.addActionListener(zuhoerer); 
        b5.addActionListener(zuhoerer);
        b6.addActionListener(zuhoerer);
        b7.addActionListener(zuhoerer); 
        b8.addActionListener(zuhoerer); 
        b9.addActionListener(zuhoerer); 
        b0.addActionListener(zuhoerer); 
        bplus.addActionListener(zuhoerer);
        bminus.addActionListener(zuhoerer); 
        bgleich.addActionListener(zuhoerer); 
        bpow.addActionListener(zuhoerer); 
        bsqrt.addActionListener(zuhoerer); 
        bPunkt.addActionListener(zuhoerer);
        bmal.addActionListener(zuhoerer); 
        bgeteilt.addActionListener(zuhoerer);
		}
	public static void main(String[] args) {
		//Taschenrechner rechner = new Taschenrechner("Rechner");
		}
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Einfacherer Taschenrechner, ActionListener funzt nicht. Java Basics - Anfänger-Themen 8
L ActionListener für Taschenrechner funkt nicht Java Basics - Anfänger-Themen 25
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
R Operatoren Rechenoperation verwenden für Taschenrechner. Java Basics - Anfänger-Themen 32
S while Schleife Taschenrechner Java Basics - Anfänger-Themen 1
J Taschenrechner mit mehr als 2 Zahlen. Java Basics - Anfänger-Themen 18
R Einfacher Taschenrechner mit Eclipse Java Basics - Anfänger-Themen 3
M Einfacher Taschenrechner Java Basics - Anfänger-Themen 2
Fiedelbambu Prüfen von Komma stelle beim Taschenrechner Java Basics - Anfänger-Themen 5
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
Y Taschenrechner programmieren Java Basics - Anfänger-Themen 3
G Taschenrechner ergibt Fehler in if-Abfrage Java Basics - Anfänger-Themen 6
K Erste Schritte "Taschenrechner" zeigt keine Komma Zahlen an. Java Basics - Anfänger-Themen 8
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
E JavaFX Taschenrechner Eingabe im Textfield beschränken Java Basics - Anfänger-Themen 2
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
C Taschenrechner (switch) in Taschenrechner mit Methoden umwandeln Java Basics - Anfänger-Themen 115
W Taschenrechner mit Switch case Java Basics - Anfänger-Themen 4
W Taschenrechner Java Basics - Anfänger-Themen 11
A Taschenrechner mit Gui erstellen Java Basics - Anfänger-Themen 9
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
P Taschenrechner mit unendlich vielen Eingabemöglichkeiten Java Basics - Anfänger-Themen 1
V Erste Schritte Taschenrechner mit beliebig vielen Zahlen Java Basics - Anfänger-Themen 5
S Taschenrechner Java Basics - Anfänger-Themen 13
P Taschenrechner Text übertragung Java Basics - Anfänger-Themen 3
S Compiler-Fehler Basic- Taschenrechner/ Fehler Java Basics - Anfänger-Themen 8
S Basic- Taschenrechner? Java Basics - Anfänger-Themen 7
P Hilfe bei Java Taschenrechner Java Basics - Anfänger-Themen 25
F Erste Schritte Frage zu simplem Taschenrechner(switch) Java Basics - Anfänger-Themen 16
L Mein Taschenrechner lässt sich plötzlich nicht mehr öffnen Java Basics - Anfänger-Themen 5
S Taschenrechner hilfe! Java Basics - Anfänger-Themen 17
H Java Taschenrechner Java Basics - Anfänger-Themen 4
R Variablen Taschenrechner mit Komfortfunktionen Java Basics - Anfänger-Themen 2
J RPN Taschenrechner - keine Lösung!! Java Basics - Anfänger-Themen 84
M Java Taschenrechner (if-else) Java Basics - Anfänger-Themen 11
L Taschenrechner mit switch und while funktioniert noch nicht richtig Java Basics - Anfänger-Themen 22
Q simpler Taschenrechner Java Basics - Anfänger-Themen 34
R Taschenrechner NullPointerException Java Basics - Anfänger-Themen 1
R Variablen Weitergehenderr Taschenrechner Java Basics - Anfänger-Themen 4
F Taschenrechner "Error loading class..." Java Basics - Anfänger-Themen 5
M Java Taschenrechner Programmieren Java Basics - Anfänger-Themen 12
P Erste Schritte Taschenrechner mit if-else Anweisung Java Basics - Anfänger-Themen 6
G Taschenrechner gibt nur 0.0 aus Java Basics - Anfänger-Themen 8
A Taschenrechner programmieren Java Basics - Anfänger-Themen 21
Z Java Taschenrechner Java Basics - Anfänger-Themen 6
J Kleiner Taschenrechner! Anfänger braucht Hilfe :( Java Basics - Anfänger-Themen 2
C Taschenrechner in Java Java Basics - Anfänger-Themen 6
J Erste Schritte Java CMD Taschenrechner mit Parametern! Java Basics - Anfänger-Themen 16
J Taschenrechner: Probleme Java Basics - Anfänger-Themen 5
E Taschenrechner problem! Ich komme nicht voran Java Basics - Anfänger-Themen 18
R Erste Schritte Taschenrechner mit Schleife Java Basics - Anfänger-Themen 24
Lord.Djerun (Taschenrechner Netbeans) Komma nur einmal schreiben & 0 ersetzen Java Basics - Anfänger-Themen 1
Z Taschenrechner - Additions/Substraktions/Multiplikations/Divionsketten! Java Basics - Anfänger-Themen 4
D Taschenrechner Frage Java Basics - Anfänger-Themen 12
Z Sehr simpler Taschenrechner - Hilfe! Java Basics - Anfänger-Themen 10
Z Taschenrechner - Wie addiere,multipliziere und subtrahiere ich? Java Basics - Anfänger-Themen 6
D kleiner Taschenrechner mit switch fehlerhaft Java Basics - Anfänger-Themen 1
K Taschenrechner im GUI Java Basics - Anfänger-Themen 2
P Taschenrechner, operatoren Java Basics - Anfänger-Themen 4
D Simpler Taschenrechner Java Basics - Anfänger-Themen 6
A Anfänger Taschenrechner Frage Java Basics - Anfänger-Themen 14
R Erste Schritte Taschenrechner - Punkt-vor-Strich Rechnung Java Basics - Anfänger-Themen 1
S Operatoren Taschenrechner Ergebnis ausgeben Java Basics - Anfänger-Themen 7
A Taschenrechner zeigt Error Java Basics - Anfänger-Themen 7
J Taschenrechner Funktion Java Basics - Anfänger-Themen 18
M Taschenrechner fertigstellung Java Basics - Anfänger-Themen 1
N Methoden Taschenrechner Java Basics - Anfänger-Themen 2
F z = input.nextChar(); PROBLEM Taschenrechner Java Basics - Anfänger-Themen 7
J Scanner Taschenrechner? Java Basics - Anfänger-Themen 7
J Variablen Rechenzeichen und Zahlen verknüpfen für einen Taschenrechner Java Basics - Anfänger-Themen 17
B Klassen Java Taschenrechner mit Klassen und Methoden Java Basics - Anfänger-Themen 12
B Erste Schritte Brauche Hilfe bei einem Java-Taschenrechner Java Basics - Anfänger-Themen 11
R Methoden Taschenrechner Java Basics - Anfänger-Themen 4
P Taschenrechner , IF-Abfrage Java Basics - Anfänger-Themen 12
I Taschenrechner - Methoden implementieren Java Basics - Anfänger-Themen 5
I Java Starthilfe (Taschenrechner) Java Basics - Anfänger-Themen 7
J Taschenrechner Problemchen Java Basics - Anfänger-Themen 3
D Erste Schritte Taschenrechner Java Basics - Anfänger-Themen 11
K taschenrechner - Fehler beim Kürzen eines Bruches finden Java Basics - Anfänger-Themen 20
J Taschenrechner Punkt vor Strich Java Basics - Anfänger-Themen 9
A Taschenrechner programmieren Java Basics - Anfänger-Themen 5
M Ausklappbares Fenster bei grafischem Taschenrechner Java Basics - Anfänger-Themen 2
M Dividieren bei Grafischem Taschenrechner klappt nicht Java Basics - Anfänger-Themen 2
N Taschenrechner mit Unterprogra Java Basics - Anfänger-Themen 6
C Taschenrechner Java Basics - Anfänger-Themen 12
Z Taschenrechner programmieren Java Basics - Anfänger-Themen 5
E Erste Schritte Taschenrechner Java Basics - Anfänger-Themen 8
K Taschenrechner Java Basics - Anfänger-Themen 25
J Textfeld für Taschenrechner Java Basics - Anfänger-Themen 3
D Taschenrechner Java Basics - Anfänger-Themen 28
A Taschenrechner-GUI mit BorderLayout? Java Basics - Anfänger-Themen 6
W [PROJEKT] Simpler grafischer Taschenrechner Java Basics - Anfänger-Themen 8
M Taschenrechner mit JApplet Java Basics - Anfänger-Themen 26
J Grafischen Taschenrechner programmieren - Frage dazu Java Basics - Anfänger-Themen 12
W Taschenrechner Java Basics - Anfänger-Themen 2
T Tasten vom Taschenrechner? Java Basics - Anfänger-Themen 3
S Datentypen Taschenrechner Java Basics - Anfänger-Themen 13
J Taschenrechner Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben