Hey hallo liebe Java Freunde,
ich habe ein Problem.
Und zwar habe ich meine erste GUI erstellt.
Diese beinhaltet auf der linken Seite einen Zähler (Wie oft wurde Artikel gekauft).
In der Mitte jeweils ein Button um diesen zu erhöhen.
Und Rechts den Preis je Stk. (Siehe Bild)
Ganz unten will ich jetzt die gesamte Summe ausgeben lassen.
Nun zu meinen Problemen:
Ich berechne in der Main ganz unten ja den gesamt Wer der Waren, allerdings wenn ich jetzt den multiplikator (Anzahl der bestimmten Ware) mit einbringe, weiß ich nicht wie ich den jeweiligen multiplikator in der Schleife (oder anders) von der Richtigen Ware auslesen lassen soll. Hoffe das war soweit verständlich.
Bild GUI
Quellcode:
Main:
Ware:
Falls ich mich zu unverständlich ausgedrückt habe, fragt einfach nach.=)
Schon mal Danke ;-)
-----------------
Ps: Ja ich habe mich 2012 schon einmal mit Java versucht, nur bin ich durch Umstände dazu gezwungen worden es bleiben zu lassen. Aus dieser Zeit stammt auch noch der Account
ich habe ein Problem.
Und zwar habe ich meine erste GUI erstellt.
Diese beinhaltet auf der linken Seite einen Zähler (Wie oft wurde Artikel gekauft).
In der Mitte jeweils ein Button um diesen zu erhöhen.
Und Rechts den Preis je Stk. (Siehe Bild)
Ganz unten will ich jetzt die gesamte Summe ausgeben lassen.
Nun zu meinen Problemen:
- Wie realisiere ich dass der Preis sich sofort bei einem klick aktualisiert.
- Wie schaffe ich es mit einer Schleife dies zu berechnen.
- Was haltet ihr von meinem Programmierstil? Was kann ich verbessern? (Programmiere noch nicht so lange)
Ich berechne in der Main ganz unten ja den gesamt Wer der Waren, allerdings wenn ich jetzt den multiplikator (Anzahl der bestimmten Ware) mit einbringe, weiß ich nicht wie ich den jeweiligen multiplikator in der Schleife (oder anders) von der Richtigen Ware auslesen lassen soll. Hoffe das war soweit verständlich.
Bild GUI
Quellcode:
Main:
Java:
import java.awt.Component;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JTextArea;
public class StartUp {
static double gesPreis = 0;
public static int multiplikator = 0;
static ArrayList<Double> summe = new ArrayList<Double>();
static ArrayList<Ware> wareList = new ArrayList<Ware>();
public static void main(String[] args) {
// Erstellen des Hauptfensters
JFrame HauptFenster = new JFrame();
HauptFenster.setTitle("Kasse");
HauptFenster.setBounds(100, 100, 800, 600);
HauptFenster.setDefaultCloseOperation(3);
HauptFenster.setResizable(false);
HauptFenster.setLayout(null);
HauptFenster.setVisible(true);
HauptFenster.setAlwaysOnTop(true);
// Milch + Textfelderstellen und dem Hauptfdenster hinzufügen
Ware milch = new Ware(1.19, "Milch", 70, 50, 150, 50); //Erstelle Milch
HauptFenster.add(milch.textFeld()); // rufe Methode textFeld() auf und setzte die Parameter
HauptFenster.add(milch); //Füge Milch dem HAuptfenster hinzu
HauptFenster.add(milch.zaehlerFeld()); //rufe Methode zaehlerFeld() auf und setzte die Parameter
multiplikator = milch.myL.getZaehler(); // Multiplikator soll die Summe ges errechnen
summe.add(milch.getPreis()); // füge Preis ArrayList hinzu
wareList.add(milch);
// Pizza Hinzufügen // Y + 70
Ware pizza = new Ware(3.29, "Pizza", 70, 120, 150, 50);
HauptFenster.add(pizza.textFeld());
HauptFenster.add(pizza);
HauptFenster.add(pizza.zaehlerFeld());
// multiplikator = pizza.myL.getZaehler();
summe.add(pizza.getPreis());
wareList.add(pizza);
// Rettich
Ware rettich = new Ware(1.99, "Rettich", 70, 190, 150, 50);
HauptFenster.add(rettich.textFeld());
HauptFenster.add(rettich);
HauptFenster.add(rettich.zaehlerFeld());
// multiplikator = rettich.myL.getZaehler();
summe.add(rettich.getPreis());
wareList.add(rettich);
// Harter Alkohol
Ware harterAlkohol = new Ware(19.99, "Harter Alkohol", 70, 260, 150, 50);
HauptFenster.add(harterAlkohol.textFeld());
HauptFenster.add(harterAlkohol);
HauptFenster.add(harterAlkohol.zaehlerFeld());
// multiplikator = harterAlkohol.myL.getZaehler();
summe.add(harterAlkohol.getPreis());
wareList.add(harterAlkohol);
// Ausgabe gesamt Preis
JTextArea ta = new JTextArea();
ta.setBounds(220, 330, 150, 50);
ta.setText("" + berechnung(wareList.get(0)));
ta.setLayout(null);
HauptFenster.add(ta);
HauptFenster.repaint();
}
// Schleife zum ges Summe berechnen
static double berechnung(Ware ware) {
for (double s : summe) {
//gesPreis += s * s.multiplikator;
gesPreis += s * multiplikator ;
}
return gesPreis;
}
}
Ware:
Java:
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;
class Ware extends JButton {
private double preis;
JButton btn;
int x, y, width, height;
MyListener myL = new MyListener();
JTextField textZ = new JTextField();
//Konstruktor
public Ware(double preis, String name, int x, int y, int width, int height) {
// Eingabe Global zuweisen
this.x = x;
this.y = y;
this.height = height;
this.width = width;
this.preis = preis;
// Button erzeugen
this.btn = this;
this.btn.setText(name);
this.btn.setBounds(x, y, width, height);
// Listener an button fügen
btn.addActionListener(myL);
}
// Zähler -> Textarea ausgeben
public JTextField zaehlerFeld() {
textZ.setBounds((x - 50), y, 50, height);
System.out.println(myL.zaehler + "JTextFiel");
textZ.setText("" + myL.zaehler);
textZ.setVisible(true);
return textZ;
}
// Textfeld in Abhänigkeit des Buttons(Ware) erstellen gibt JTextField
// zurück
public JTextField textFeld() {
JTextField text = new JTextField();
text.setBounds((x + 150), y, width, height);
text.setText(preis + " €");
return text;
}
// Getter & Setter
public double getPreis() {
return preis;
}
public void setPreis(double preis) {
this.preis = preis;
}
// Klasse Listener BUTTON in der Ware klasse
class MyListener implements ActionListener {
int zaehler = 0;
@Override
public void actionPerformed(ActionEvent e) {
zaehler++;
System.out.println(zaehler);
textZ.setText(zaehler + "" );
}
public int getZaehler() {
return zaehler;
}
public void setZaehler(int zaehler) {
this.zaehler = zaehler;
}
}
}
Falls ich mich zu unverständlich ausgedrückt habe, fragt einfach nach.=)
Schon mal Danke ;-)
-----------------
Ps: Ja ich habe mich 2012 schon einmal mit Java versucht, nur bin ich durch Umstände dazu gezwungen worden es bleiben zu lassen. Aus dieser Zeit stammt auch noch der Account
Zuletzt bearbeitet von einem Moderator: