# Applet mit if anwendungen - brief gewicht



## tenten (12. Mai 2010)

Hallo miteinander!
Habe folgende Aufgabe bekommen .. 

Aufgabe:
Erstelle ein Applet, das nach Eingabe des Gewichtes eines Briefes, das zu zahlende Porto ausgibt.

Das soll so aussehen dass links ein Eingabefenster ist wo man das Gewicht des Briefes eingeben kann, in der Mitte dann ein Button um das zu Berechnen, und links dann die Ausgabe.
Bei einem Gewicht unter 20 g kostet der Brief 0,55€, unter 50g 0,95€ und über 50g 3€
Wenn der Brief über 100g is soll eine Meldung erscheinen ...

gut, wie fange ich am besten an 
bin leider ein kompletter Java-noob ... bin über jede hilfe dankbar.

das vorgegebene Gerüst sieht so aus

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



public class Porto extends Applet implements ActionListener
{	
	public void init() 
	{
	
	add(TfGewicht);
	
	add(BtRechne);
	BtRechne.addActionListener(this);
	
	add(TfPorto);
	
		
	}

	
	public void actionPerformed(ActionEvent e)
	{
		
		gewicht=Double.parseDouble(sGewicht=TfGewicht.getText());	
	
	}
}
```


----------



## eRaaaa (12. Mai 2010)

tenten hat gesagt.:


> gut, wie fange ich am besten an
> bin leider ein kompletter Java-noob ... bin über jede hilfe dankbar.



Naja, zunächst würde ich mal anfangen die Variablen zu deklarieren und zu initialisieren die genutzt werden sollen. Also z.B. TfGwicht (schlechte Namenswahl, aber okay ) das soll ja anscheinend das Textfeld werden. Dann fehlt noch der Button (z.B. Button BtRechne = new Button("Berechne"), und noch ein Textfeld/label wo das Ergebnis angezeigt werden soll. Dann noch 2 Variablen (String + double ) und dann ist es ja eig. auch schon fast geschafft. in der actionPerformed dann noch die Unterscheidungen, da hast du ja schgon richtig erkannt das man das mit if`s lösen könnte...und zum Schluss dein Ergebnis mit setText auf dem Textfeld/Label setzen 
Wo genau kommst du nicht weiter?


----------



## L-ectron-X (12. Mai 2010)

[OT]@ tenten: Sollte die IP eurer Schule noch mal negativ hier auffallen, werden für euch sehr unangenehme Schritte eingeleitet.[/OT]


----------



## tenten (12. Mai 2010)

eRaaaa hat gesagt.:


> Naja, zunächst würde ich mal anfangen die Variablen zu deklarieren und zu initialisieren die genutzt werden sollen. Also z.B. TfGwicht (schlechte Namenswahl, aber okay ) das soll ja anscheinend das Textfeld werden. Dann fehlt noch der Button (z.B. Button BtRechne = new Button("Berechne"), und noch ein Textfeld/label wo das Ergebnis angezeigt werden soll. Dann noch 2 Variablen (String + double ) und dann ist es ja eig. auch schon fast geschafft. in der actionPerformed dann noch die Unterscheidungen, da hast du ja schgon richtig erkannt das man das mit if`s lösen könnte...und zum Schluss dein Ergebnis mit setText auf dem Textfeld/Label setzen
> Wo genau kommst du nicht weiter?



Das ist so ewig her das ich das gemacht habe .. 
Wie erstelle ich ein Textfeld? oder einen Button? wo setze ich das ein?
Damn, in einer Stunde muss das abgegeben sein.

Ich komme irgendwie nirgends weiter, ich kenne die Befehle nicht mehr. ;( 

[Java]	public void init() 
	{

	add(TfGewicht);
	TextField tf = new TextField("Text", 3);


	add(BtRechne);
	Button BtRechne = new Button("Berechne Porto");
	BtRechne.addActionListener(this);

	add(TfPorto);


	}
[/code]
Ist es richtig eingesetzt?


L-ectron-x
wieso sind die negativ aufgefallen?


----------



## eRaaaa (12. Mai 2010)

tenten hat gesagt.:


> Ist es richtig eingesetzt?



Nein. Erstens hast du das Textfeld falsch benannt(es soll TfGewicht heißen) und zweitens musst du das initialisieren BEVOR du es verwendest..also eine Zeile höher...Button the same...

Und wenn es schon länger her ist, musst du es eben nochmal nachschlagen, hier wird dir keiner die Lösung zeigen ...


----------



## L-ectron-X (12. Mai 2010)

tenten hat gesagt.:


> wieso sind die negativ aufgefallen?


Wir verstehen uns...


----------



## tenten (12. Mai 2010)

eRaaaa hat gesagt.:


> hier wird dir keiner die Lösung zeigen


verlange ich nicht  steht oben ja schon.

muss das if zu 

```
public void init()
```
oder zu 

```
public void actionPerformed(ActionEvent e)
```

eigentlich würde ich sagen zum ersten, da das zweite ja eigentlich nurnoch ausgabe ist. right?


----------



## eRaaaa (12. Mai 2010)

Ich würde sagen zum Zweiten..für die Ausgabe musst du ja schließlich wissen was du anzeigen willst...

Es läuft doch so ab:

User trägt Wert ins Textfeld1 ein
User drückt Button (dadurch wird der Listener aktiv => Code in actionPerformed wird ausgeführt)
actionPerformed holt sich den Text aus Textfeld1, wandelt ihn in double um (das hast du ja sogar schon). Der Wert steht nun in der Variable [c]gewicht[/c]
Nun musst du halt diesen Wert vergleichen und dementsprechend den Text im Textfeld2/Label setzen


----------



## L-ectron-X (12. Mai 2010)

Die Stunde ist um. (Abgabetermin)

Die mögliche Lösung könnte so aussehen:

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



public class Porto extends Applet implements ActionListener {
    private TextField tfGewicht;
    private Button btRechne;
    private TextField tfPorto;


    public void init() {
        add(new Label("Gewicht:"));
        tfGewicht = new TextField(2);
        add(tfGewicht);
        add(new Label("g"));

        btRechne = new Button("Porto berechnen");
        btRechne.addActionListener(this);
        add(btRechne);

        tfPorto = new TextField(7);
        tfPorto.setEditable(false);
        add(tfPorto);
    }


    public void actionPerformed(ActionEvent e) {
        double gewicht = Double.parseDouble(tfGewicht.getText());
        if(gewicht <= 0) {
            zeigeMeldung("Ungültige Eingabe!");
        }
        else if(gewicht > 0 && gewicht < 20) {
            tfPorto.setText("0,55 Euro");
        }
        else if(gewicht >= 20 && gewicht < 50) {
            tfPorto.setText("0,95 Euro");
        }
        else if(gewicht >= 50 && gewicht <= 100){
            tfPorto.setText("3,00 Euro");
        }
        else {
            zeigeMeldung("Das zulässige Briefgewicht wurde überschritten!");
        }
    }
    
    private void zeigeMeldung(String text) {
        Panel p = new Panel(new GridBagLayout());
        p.add(new Label(text));
        final Frame meldung = new Frame("Fehler");
        meldung.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                meldung.dispose();
            }
        });
        meldung.add(p);
        meldung.setResizable(false);
        meldung.setSize(400, 200);
        meldung.setLocationRelativeTo(this);
        meldung.setVisible(true);
    }
}
```


----------



## tenten (12. Mai 2010)

nja, hatte es grob auch so *lach*
vielen dank für die hilfe, und die lösung dann später. glaub an java muss ich mich wirklich nochmal intensiver dransetzen. grundlagen und alles auffrischen ... würd net schaden

btw, es war keine prüfung oder so falls du das dachtest  war nur da abgabe


----------

