Applet mit if anwendungen - brief gewicht

tenten

Mitglied
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 :D
bin leider ein kompletter Java-noob ... bin über jede hilfe dankbar.

das vorgegebene Gerüst sieht so aus
Java:
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

Top Contributor
gut, wie fange ich am besten an :D
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 :D) 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

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

tenten

Mitglied
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 :D) 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

Top Contributor
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 ...
 

tenten

Mitglied
hier wird dir keiner die Lösung zeigen
verlange ich nicht ;) steht oben ja schon.

muss das if zu
Java:
	public void init()
oder zu
Java:
	public void actionPerformed(ActionEvent e)

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

eRaaaa

Top Contributor
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
 
Zuletzt bearbeitet:

L-ectron-X

Gesperrter Benutzer
Die Stunde ist um. (Abgabetermin)

Die mögliche Lösung könnte so aussehen:
Java:
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

Mitglied
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
 

Neue Themen


Oben