# Java Konto applet erstellen



## Sp0rky (7. Mrz 2008)

Hallo.
Ich brauchte ein Applet bei dem ich Ein- und Auszahlungen von einem Konto berechne. 
Es gibt ein Konto, bei dem der Kontostand beliebig festgelegt wird.
Nun gibt es 2 Textfelder. Ein "Einzahlen" Feld und ein "Auszahlen" Feld.
Den Betrag den man im Einzahlen bzw. Auszahlen Feld eingegeben hat soll nach dem drücken eines "Aktualisieren" Buttons dem Aktuellen Kontostand dazuaddiert oder abgezogen werden. Wenn das Konto überzogen ist, soll eine Fehlermeldung mit "Konto überzogen" in einem Fehlerfeld erscheinen.
Ich habe das Layout schon fertig. 
Es müssten nur noch der Kontostand eingefügt werden, und die Verknüpfungen zwischen den Einzahlen Auszahlen feldern, dem Aktualisieren Knopf und dem Fehlerfeld.
Hier ist mein bisheriges Programm. 
Es sind bis jetzt keine Kompilierfehler oder sonstiges enthalten.
Schonmal Vielen Dank! 
MfG Sp0rky



```
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

public class KontoApplet extends Applet {
  private TextField textStand = new TextField();
  private TextField textEinzahlen = new TextField();
  private TextField textAuszahlen = new TextField();
  private Button aktual = new Button();
  private Label textKontoStand = new Label();
  private Button buttonEinzahlen = new Button();
  private Button buttonAuszahlen = new Button();
   
  public void init() {
    Panel cp = new Panel(null);
    cp.setBounds(0, 0, 501, 195);
    add(cp);

    textStand.setBounds(320, 56, 145, 24);
    textStand.setEditable(false);
    textStand.setText("");
    cp.add(textStand);
    textEinzahlen.setBounds(48, 24, 81, 24);
    textEinzahlen.setText("");
    cp.add(textEinzahlen);
    textAuszahlen.setBounds(48, 80, 81, 24);
    textAuszahlen.setEditable(true);
    textAuszahlen.setText("");
    cp.add(textAuszahlen);
    aktual.setBounds(224, 40, 89, 49);
    aktual.setLabel("Aktualisieren");
    cp.add(aktual);
    aktual.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        aktualActionPerformed(evt);
      }
    });

    textKontoStand.setBounds(336, 32, 114, 24);
    textKontoStand.setText("KontoStand:");
    textKontoStand.setFont(new Font("MS Sans Serif", Font.BOLD, 17));
    cp.add(textKontoStand);
    buttonEinzahlen.setBounds(128, 24, 81, 25);
    buttonEinzahlen.setLabel("Einzahlen");
    cp.add(buttonEinzahlen);
    buttonEinzahlen.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        buttonEinzahlenActionPerformed(evt);
      }
    });

    buttonAuszahlen.setBounds(128, 80, 81, 25);
    buttonAuszahlen.setLabel("Auszahlen");
    cp.add(buttonAuszahlen);
    buttonAuszahlen.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        buttonAuszahlenActionPerformed(evt);
      }
    });

  }
   public void aktualActionPerformed(ActionEvent evt) {
  }

  public void buttonEinzahlenActionPerformed(ActionEvent evt) {
  }

  public void buttonAuszahlenActionPerformed(ActionEvent evt) {
  }
}
```


----------



## Quaxli (7. Mrz 2008)

Wie in der Überschrift schon steht, machen wir keine Hausaufgaben ;-).
Allerdings habe ich an Deinem Code mal ein bißchen rumgefrickelt und ein paar Tipps eingebaut, damit Du weiter kommst.


```
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

public class KontoApplet extends Applet implements ActionListener{

	private static final long	serialVersionUID	= 1L;
	
	private TextField textStand;
  private TextField textEinzahlen;
  private TextField textAuszahlen;
   
  public void init() {
    Panel cp = new Panel(null);
    cp.setBounds(0, 0, 501, 195);
    add(cp);

    textStand = new TextField("0");
    textStand.setBounds(320, 56, 145, 24);
    textStand.setEditable(false);
    textStand.setText("");
    cp.add(textStand);
    
    textEinzahlen = new TextField("0");
    textEinzahlen.setBounds(48, 24, 81, 24);
    textEinzahlen.setText("");
    cp.add(textEinzahlen);
    
    textAuszahlen = new TextField("0");
    textAuszahlen.setBounds(48, 80, 81, 24);
    textAuszahlen.setEditable(true);
    textAuszahlen.setText("");
    cp.add(textAuszahlen);
    
    Button aktual = new Button("aktualisieren");
    aktual.setBounds(224, 40, 89, 49);
    aktual.setActionCommand("compute");
    aktual.addActionListener(this);
    cp.add(aktual);
    
    Label textKontoStand = new Label("KontoStand");
    textKontoStand.setBounds(336, 32, 114, 24);
    textKontoStand.setFont(new Font("MS Sans Serif", Font.BOLD, 17));
    cp.add(textKontoStand);
    
    Button buttonEinzahlen = new Button("Einzahlen");
    buttonEinzahlen.setBounds(128, 24, 81, 25);
    buttonEinzahlen.setActionCommand("KohleRein");
    buttonEinzahlen.addActionListener(this);
    cp.add(buttonEinzahlen);
    
    Button buttonAuszahlen = new Button("Auszahlen");
    buttonAuszahlen.setBounds(128, 80, 81, 25);
    buttonAuszahlen.setActionCommand("KohleRaus");
    buttonAuszahlen.addActionListener(this);
    cp.add(buttonAuszahlen);

  }

  public void actionPerformed(ActionEvent e) {
  	
  	if(e.getActionCommand().equals("compute")){
  		System.out.println("Einzahlen auslesen - nach integer parsen");
  		System.out.println("Auszahlen auselsen - nach integer parsen");
  		System.out.println("Eingabefelder mit setText(..) auf Null setzen");
  		System.out.println("neuen Kontostand ausrechnen");
  		System.out.println("neuen Kontostand in Textfeldschreiben");
  		System.out.println("'repaint()' aufrufen");
  	}
  	
  	if(e.getActionCommand().equals("KohleRein")){
  		System.out.println("Einzahlung! - ist dieser Button notwendig?");
  	}
  	
  	if(e.getActionCommand().equals("KohleRaus")){
  		System.out.println("Auszahlung! - ist dieser Button notwendig?");
  	}
  	
		
	}
}
```

Noch ein paar Anmerkungen:

- Du hattest zuviele unnötige Instanzvariablen, ich habe das reduziert
- eine Varialbe Kontostand brauchst Du noch
- ich habe geschrieben, Du sollst die Textfelder auslesen und nach Integer parsen. Natürlich nur, wenn keine Nachommastellen verwendet werden. Sonst mußt z. B. einen Double nehmen
- alles andere habe ich in die print-Anweisungen gefrickelt.
- Meiner Ansicht nach hast Du zuviele Buttons oder sollte das so sein?

Viel Spaß beim Weiterproggen.


----------



## Sp0rky (7. Mrz 2008)

ja das sollte so sein... ich weiß.. eigentlich unnötig.. die einzahlen und auszahlen buttons brauch ich nicht ... 
was müsste ich jetzt noch machen ? hab ich nicht ganz verstanden!


----------



## Quaxli (7. Mrz 2008)

Du mußt jetzt noch eine Instanzvariable Kontostand anlegen, z. B.: double kontostand. Diese initialisierst Du auch in der init-Methode.
Und dort wo jetzt die vielen println-Anweisungen stehen mußt Du Code hinterlegen.
Zunächst die Felder auslesen mit der Methode getText von TextField (vgl. API)
Diese Methode liefert Dir ein String-Objekt zurück. Diesen String parst Du nach double, dazu kannst Du die statische Methode der Klasse Double verwenden. Das sieht ungefähr so aus: 

double in = Double.parseDouble("25.80");

Das Ergebnis addierst oder subtrahierst (je nachdem) Du zum Kontostand.
Danach wandelst Du den Kontostand in einen String um (auch Klasse Double verwenden (new Double(25.80).toString() )) und schreibst diesen mit setText(..) in das entpsrechende Textfield.

Ganz wichtig: Wenn Du Veränderungen vorgenommen hast, mußt Du repaint() aufrufen, am Besten ans Ende der actionPerformed-Methode packen, etwa Zeile 80 in meinem Beispiel.

Und das isses dann  (Ganz einfach, wenn man's kann  )


----------



## Sp0rky (7. Mrz 2008)

ok.. schonmal vielen dank.!
hast du vll icq.. damit ich dich fragen kann falls ich fragen hab ? 
weil ich versteh eigentlich nicht sehr viel in java.. das bisherige hab ich mit so nem design programm geschrieben.. hab nix davon selbst geschrieben so ca


----------



## Quaxli (11. Mrz 2008)

Hab ich, ist aber geheim. Steht alles hier: www.javabuch.de


----------

