GUI-Taschenrechner rechnet nicht

Status
Nicht offen für weitere Antworten.

sliwalker

Top Contributor
Hoi zusammen,

Wir haben gerade angefangen GUI zu erstellen.
Als Uebung wollte ich mir nen simplen Taschenrechner bauen, doch er rechnet nicht ;(
Ich sitz da jetzt seit 16h dran ( jetzt 19:50).
Bitte helft mir, wenn ihr "einen" Fehler seht.

Hier der Code:
Code:
/*
 * Created on 26.05.2004
 * @author sliwalker
 */

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


class calc extends JFrame
{
	// Eigenschaften
	JPanel p1;
	JPanel p2;
	JPanel p3;
	
	JTextField zahl1;
	JTextField zahl2;
	JTextField erg;
	
	JButton addier;
	JButton sub;
	JButton mul;
	JButton div;
	
	
	public void addierac(ActionEvent ae)
	{
		String s1 = zahl1.getText();
		String s2 = zahl2.getText();
		int num1 = Integer.parseInt(s1);
		int num2 = Integer.parseInt(s2);
		int ergebnis = num1 + num2;
		String summe = Integer.toString(ergebnis);
		erg.setText(summe);
	}
	
	public void subac(ActionEvent ae)
	{
		String s1 = zahl1.getText();
		String s2 = zahl2.getText();
		int num1 = Integer.parseInt(s1);
		int num2 = Integer.parseInt(s2);
		int ergebnis = num1 - num2;
		String summe = Integer.toString(ergebnis);
		erg.setText(summe);
	}
	
	public void mulac(ActionEvent ae)
	{
		String s1 = zahl1.getText();
		String s2 = zahl2.getText();
		int num1 = Integer.parseInt(s1);
		int num2 = Integer.parseInt(s2);
		int ergebnis = num1 * num2;
		String summe = Integer.toString(ergebnis);
		erg.setText(summe);
	}
	
	public void divac(ActionEvent ae)
	{
		String s1 = zahl1.getText();
		String s2 = zahl2.getText();
		int num1 = Integer.parseInt(s1);
		int num2 = Integer.parseInt(s2);
		int ergebnis = num1 / num2;
		String summe = Integer.toString(ergebnis);
		erg.setText(summe);
	}
	

	public calc()
	{
		super("Mini-Rechner");
		
		Container contentPane = getContentPane();
		contentPane.setLayout(new BorderLayout());
		
		p1 = new JPanel();
		p1.setLayout(new FlowLayout(FlowLayout.CENTER));
		p2 = new JPanel();
		p2.setLayout(new GridLayout(3,2));
		p3 = new JPanel();
		p3.setLayout(new FlowLayout(FlowLayout.RIGHT));
		
		zahl1 = new JTextField(5);
		zahl2 = new JTextField(5);
		erg   = new JTextField(5);
		addier = new JButton(" + ");
		sub   = new JButton(" - ");
		mul   = new JButton(" * ");
		div   = new JButton(" / ");
				
		p1.add(new JLabel("SLi`s Mini-Rechner"));
		p2.add(new JLabel("Zahl1: "));
		p2.add(zahl1);
		p2.add(new JLabel("Zahl2: "));
		p2.add(zahl2);
		p2.add(new JLabel("Ergebnis: "));
		p2.add(new JTextField(10));
		p3.add(addier);
		p3.add(sub);
		p3.add(mul);
		p3.add(div);
		pack();
	
		
		addier.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent ae)
			{
				addierac(ae);
			}
		});
		sub.addActionListener(new ActionListener()
				{
			public void actionPerformed(ActionEvent ae)
			{
				subac(ae);
			}
		});
		mul.addActionListener(new ActionListener()
				{
			public void actionPerformed(ActionEvent ae)
			{
				mulac(ae);
			}
		});
		div.addActionListener(new ActionListener()
				{
			public void actionPerformed(ActionEvent ae)
			{
				divac(ae);
			}
		});
		
		contentPane.add("North",p1);
		contentPane.add("Center",p2);		
		contentPane.add("South",p3);
		
	}
}
public class rechner
{

	public static void main(String[] args)
	{
		calc c = new calc();
		c.setBounds(100,100,500,400);
		c.show();
	}
}

Danke für eure Hilfe.
greetz
Sli
 
B

Beni

Gast
Och, du hast leider das Textfeld mit dem Ergebnis nicht angezeigt:

anstelle von
Code:
      p2.add(new JLabel("Ergebnis: "));
      p2.add(new JTextField(10));

solltest du
Code:
      p2.add(new JLabel("Ergebnis: "));
      p2.add( erg );
verwenden.


mfg Beni
 

sliwalker

Top Contributor
Hab es gerade auch herausgefunden (herausprobiert).
Läuft auch einwandfrei.

Aber warum geht das nicht mit einem Textfeld?
Das ging in einem anderem Beispiel von unserem Lehrer.
(Kann ich auf Wunsch posten.)

Naja. Mit dem Label gehts auch und nur das zählt;)

Danke für Deine Mühe ;)

Eine Frage noch dazu:
Muss man eigentlich soviele ActionListener für die Buttons schreiben?
Das kann man doch bestimmt automatisieren.
Hätte da wer mal nen Wink in eine Richtung?

greetz
SLi
 

Freakazoid

Mitglied
*winke winke*
:lol:

hatte gerade bei meiner zigarette nix besseres zu tun 8)
dein textfeld funzt und das mit dem actionlistener musst dir anschauen.....

Code:
/* 
* Created on 26.05.2004 
* @author sliwalker 
*/ 

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 


class calc extends JFrame 
{ 
   // Eigenschaften 
   JPanel p1; 
   JPanel p2; 
   JPanel p3; 
    
   JTextField zahl1; 
   JTextField zahl2; 
   
   JButton addier; 
   JButton sub; 
   JButton mul; 
   JButton div; 
   
   JTextField erg=new JTextField(10);
   
   Listener listi =new Listener();
    
    
   public void addierac() 
   { 
      String s1 = zahl1.getText(); 
      String s2 = zahl2.getText(); 
      int num1 = Integer.parseInt(s1); 
      int num2 = Integer.parseInt(s2); 
      int ergebnis = num1 + num2; 
      String summe = Integer.toString(ergebnis); 
      erg.setText(summe); 
   } 
    
   public void subac() 
   { 
      String s1 = zahl1.getText(); 
      String s2 = zahl2.getText(); 
      int num1 = Integer.parseInt(s1); 
      int num2 = Integer.parseInt(s2); 
      int ergebnis = num1 - num2; 
      String summe = Integer.toString(ergebnis); 
      erg.setText(summe); 
   } 
    
   public void mulac() 
   { 
      String s1 = zahl1.getText(); 
      String s2 = zahl2.getText(); 
      int num1 = Integer.parseInt(s1); 
      int num2 = Integer.parseInt(s2); 
      int ergebnis = num1 * num2; 
      String summe = Integer.toString(ergebnis); 
      erg.setText(summe); 
   } 
    
   public void divac() 
   { 
      String s1 = zahl1.getText(); 
      String s2 = zahl2.getText(); 
      int num1 = Integer.parseInt(s1); 
      int num2 = Integer.parseInt(s2); 
      int ergebnis = num1 / num2; 
      String summe = Integer.toString(ergebnis); 
      erg.setText(summe); 
   } 
    

   public calc() 
   { 
      super("Mini-Rechner"); 
       
      Container contentPane = getContentPane(); 
      contentPane.setLayout(new BorderLayout()); 
       
      p1 = new JPanel(); 
      p1.setLayout(new FlowLayout(FlowLayout.CENTER)); 
      p2 = new JPanel(); 
      p2.setLayout(new GridLayout(3,2)); 
      p3 = new JPanel(); 
      p3.setLayout(new FlowLayout(FlowLayout.RIGHT)); 
       
      zahl1 = new JTextField(5); 
      zahl2 = new JTextField(5); 
      erg   = new JTextField(5); 
      addier = new JButton(" + "); 
      sub   = new JButton(" - "); 
      mul   = new JButton(" * "); 
      div   = new JButton(" / "); 
             
      p1.add(new JLabel("SLi`s Mini-Rechner")); 
      p2.add(new JLabel("Zahl1: ")); 
      p2.add(zahl1); 
      p2.add(new JLabel("Zahl2: ")); 
      p2.add(zahl2); 
      p2.add(new JLabel("Ergebnis: ")); 
      p2.add(erg); 
      p3.add(addier); 
      p3.add(sub); 
      p3.add(mul); 
      p3.add(div); 
      pack(); 
      

      addier.addActionListener(listi); 
      sub.addActionListener(listi); 
      mul.addActionListener(listi);  
      div.addActionListener(listi); 

       
      contentPane.add("North",p1); 
      contentPane.add("Center",p2);       
      contentPane.add("South",p3); 
       
   } 
   class Listener implements ActionListener
      {
	public void actionPerformed(ActionEvent ae) 
	{
	        JButton button = (JButton)ae.getSource();
				
	        if(button==addier)
	        addierac(); 

      	        if(button==sub)
            	        subac(); 
 
      	        if(button==mul)
            	        mulac(); 

      	        if(button==div)
	        divac(); 
	}
        }
} 
public class rechner 
{ 

   public static void main(String[] args) 
   { 
      calc c = new calc(); 
      c.setBounds(100,100,500,400); 
      c.show(); 
   } 
}
 

materthron

Mitglied
Nein brauchst du nicht.

Wenn du am Anfang den ActionListener als Interface implementierts, kriegst du eine methode
Code:
actionPerformed
, in der du dann die einzelnen Actions abarbeiten kannst.

Ein Beispiel um es besser verständlich zu machen:
Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Fenster1 extends JFrame implements ActionListener{


 public Fenster1(){
   setTitle("Der Fenstertitel");
   setSize(200,300);
   
   JButton knopf = new JButton("24. Dezember");
   getContentPane().add(knopf);
   
   knopf.addActionListener(this); //weist dem Button zu das diese Klasse den ActionListener enthält

   /* Mit setActionCommand() kannst du den String festlegen, der "geschickt" wird, 
    * wenn diese Aktion ausgeführt wird.
    * Wenn du es nicht verwendest, wird der Text (also "24. Dezember") als ActionCommand "gesendet" 
    * */
   knopf.setActionCommand("weihnachtsknopf gedrückt");


   setVisible(true); //macht das Fenster sichtbar
 }

 /* Hier ist die actionPerformed-Methode */
 public void actionPerformed(ActionEvent e)
    {
        String c = e.getActionCommand(); //holt sich den ActionCommand
        
        if( c.equals("weihnachtsknopf gedrückt") ){ //überprüft was drin steht und tut dann das gewünschte
          System.out.println("Frohe Weihnachten!");
        }
    }
 
 public static void main(String[] args){
  new Fenster1();     
 }
}

Ich hoffe ich konnte dir helfen. Wenn du noch Fragen hast. Poste einfach munter weiter.

BTW: Schau dir amal folgendes an: http://www.javabuch.de/
Is wirklich super!!!

MfG
Philipp
 

sliwalker

Top Contributor
Moin,

danke für die super Antworten!
Besonders die zweite Lösung gefällt mir, da sie genau das macht,
was ich mir vorgestellt habe ;)
Ist auch alles bestens kommentiert. So das ich jetzt mal versuche das umzusetzen.
Ich werd mich gleich mal an einen neuen Taschenrechner
mit ca 14 Buttons und nur einem Ergebnisfeld machen.
Ich bin mir sicher da werden noch einige Fragen aufkommen ;)

greetz
SLi
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
J Taschenrechner Java Basics - Anfänger-Themen 9
M While bei einem Taschenrechner Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben