Mahlzeit!
Ich mach gerade für meine Mitbewohnerin ein Studienprojekt und stehe vor folgendem Problem:
Es geht um ein Programm, dass verschiedene Buttons mit Getränken hat und beim klicken eines Buttons soll der Preis in ein Textfeld geschrieben werden.
Hier die Klasse Getränk:
In der Klasse Bestellfenster werden verschiedene Getränke definiert und in eine ArrayList gespeichert.
Die Buttons zu den Getränken werden in Bestellfenster dynamisch generiert:
Nun habe ich in Bestellfenster eine Methode schreibeSumme(); implementiert, die den Verkaufspreis eines Getränks auslesen soll und in das TextFeld schreiben soll:
diese MEthode wird in der Klasse ButtonAdapter auch richtig aufgerufen, ich bekomme aber immer eine NullPointerException.
Weiß jemand Rat?
PS: Bin in SWT so gar nicht fit und bin auch empört darüber, dass so etwas noch gelehrt wird.
Ich mach gerade für meine Mitbewohnerin ein Studienprojekt und stehe vor folgendem Problem:
Es geht um ein Programm, dass verschiedene Buttons mit Getränken hat und beim klicken eines Buttons soll der Preis in ein Textfeld geschrieben werden.
Hier die Klasse Getränk:
Java:
public class Getraenk
{
// Definition der Variablen für die public-Methode Getraenk
private String bezeichnung;
private long getraenkNr;
private double einkaufspreis;
private double verkaufspreis;
private double volumen;
private int anzahl;
private Abfueller abfueller;
private int id;
//Konstruktor
public Getraenk(String be, long nr, double ekp, double vkp, double vo,int anz, Abfueller ab, int id) {
bezeichnung = be;
getraenkNr = nr;
einkaufspreis = ekp;
verkaufspreis = vkp;
volumen = vo;
anzahl=anz;
abfueller = ab;
this.id = id;
abfueller.fuegeGetraenkHinzu(this);
}
// Diese Methode gibt den String "Bezeichnung" zurück
public String getBezeichnung() {
return bezeichnung;
}
//Abfüller für Button ausgeben
public Abfueller getAbfueller() {
return abfueller;
}
// Diese Methode gibt den double-Wert Verkaufspreis aus
public double getVerkaufspreis() {
return verkaufspreis;
}
//Mit dieser Methode gibt den int-Wert Anzahl aus
public int getAnzahl() {
return anzahl;
}
public int getID()
{
return id;
}
}
In der Klasse Bestellfenster werden verschiedene Getränke definiert und in eine ArrayList gespeichert.
Java:
public class Bestellfenster {
// GUI-Elemente: Objekte von SWT-Klassen
private Shell fenster = null; // Shell= Hauptfenster
private Display bildschirm = null; // Bildschirm=Display; NULL = kein Wert
// festegelegt
private Combo tischAuswahl; // als Kombinationsfeld
private Text summe;// als Text-Eingabefeld
private Text bargegeben;// als Text-Eingabefeld
private Text rückgeld; // als Text-Eingabefeld
private ArrayList<Getraenk> getraenkeliste;
private Label label;// Label=Beschriftung
private GridData data;
private Getraenk drink;
public Bestellfenster()
{ // Anwendungsfenster
bildschirm = new Display();
fenster = new Shell(bildschirm);
fenster.setText("Getränkbestellung");
fenster.setSize(400, 400);
fenster.setLayout(new GridLayout(2, false));
// fenster.setBackgroundImage(new Image(bildschirm,"./ Imagename.jpg"));
getraenkeliste = new ArrayList<Getraenk>(); // erzeugen einen neuen
// Arraylist mit
// Getränke-Elementen
// Liste mit Getränken:
Getraenk a = new Getraenk("Oxx", 4711, 1.10, 1.70, 0.33, 200,
new Abfueller("GoldOchsen", 2345, "Bahnhofstraße", 15, 73337,
"Ochsenhausen", "Deutschland"), 0);
Getraenk b = new Getraenk("Evian", 4716, 1.00, 1.50, 0.33, 200,
new Abfueller("Pepsi-Industries", 2345, "Bahnhofstraße", 16,
73336, "Bad Erbach", "Deutschland"), 1);
Getraenk c = new Getraenk("Cola", 4712, 0.80, 1.20, 0.3, 300,
new Abfueller("Pepsi-Industries", 2345, "Bahnhofstraße", 16,
73336, "Bad Erbach", "Deutschland"), 2);
Getraenk d = new Getraenk("Fanta", 4713, 0.70, 1.10, 0.3, 300,
new Abfueller("Pepsi-Industries", 2345, "Bahnhofstraße", 16,
73336, "Bad Erbach", "Deutschland"), 3);
Getraenk e = new Getraenk("RedBull", 4714, 1.20, 1.90, 0.3, 250,
new Abfueller("Pepsi-Industries", 2345, "Bahnhofstraße", 16,
73336, "Bad Erbach", "Deutschland"), 4);
Getraenk f = new Getraenk("Bionade", 4715, 1.20, 1.90, 0.3, 150,
new Abfueller("Pepsi-Industries", 2345, "Bahnhofstraße", 16,
73336, "Bad Erbach", "Deutschland"), 5);
Getraenk g = new Getraenk("Chardonnaye", 4717, 1.90, 2.50, 0.25, 200,
new Abfueller("Constance-Wine", 2399, "Weingasse", 16, 78462,
"Konstanz", "Deutschland"), 6);
Getraenk h = new Getraenk("Merlot", 4718, 1.90, 2.50, 0.25, 200,
new Abfueller("Constance-Wine", 2399, "Weingasse", 16, 78462,
"Konstanz", "Deutschland"), 7);
Getraenk i = new Getraenk("JimBeam", 4719, 1.90, 2.50, 0.175, 250,
new Abfueller("Aldi-Süd", 2457, "Alberstraße", 22, 89345,
"Metzingen", "Deutschland"), 8);
Getraenk j = new Getraenk("Tequila", 4720, 1.90, 2.50, 0.175, 400,
new Abfueller("Aldi-Süd", 2457, "Alberstraße", 22, 89345,
"Metzingen", "Deutschland"), 9);
Getraenk k = new Getraenk("Vodka-O", 4721, 1.90, 2.50, 0.5, 350,
new Abfueller("Aldi-Süd", 2457, "Alberstraße", 22, 89345,
"Metzingen", "Deutschland"), 10);
Getraenk l = new Getraenk("Mojito", 4722, 1.90, 2.50, 0.5, 350,
new Abfueller("Aldi-Süd", 2457, "Alberstraße", 22, 89345,
"Metzingen", "Deutschland"), 11);
// Getränke werden der Arraylist mit der Methode add hinten angefügt:
getraenkeliste.add(a);
getraenkeliste.add(b);
getraenkeliste.add(c);
getraenkeliste.add(d);
getraenkeliste.add(e);
getraenkeliste.add(f);
getraenkeliste.add(g);
getraenkeliste.add(h);
getraenkeliste.add(i);
getraenkeliste.add(j);
getraenkeliste.add(k);
getraenkeliste.add(l);
}
}
Java:
public void erstelleButton() {
GridData data1 = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1);
// feste Breite des Steuerelements Tisch Combo
data1.widthHint = 150;
data1.heightHint = 30; // definiert die Höhe der Button
for (int n = 0; n < getraenkeliste.size(); n++)
{
Button getraenk = new Button(fenster, SWT.PUSH);
getraenk.setText(getraenkeliste.get(n).getBezeichnung());
getraenk.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1));
getraenk.setLayoutData(data1);
getraenk.addSelectionListener(new ButtonAdapter(this));
}
}
Java:
public void schreibeSumme()
{
double sum = Double.parseDouble(summe.getText());
double price = drink.getVerkaufspreis();
sum = sum + price;
summe.setText("" + sum);
}
Weiß jemand Rat?
PS: Bin in SWT so gar nicht fit und bin auch empört darüber, dass so etwas noch gelehrt wird.