OOP Summe aus verschiedenen Instanzen einer Klasse berechnen

BombaX

Mitglied
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:
  1. Wie realisiere ich dass der Preis sich sofort bei einem klick aktualisiert.
  2. Wie schaffe ich es mit einer Schleife dies zu berechnen.
  3. Was haltet ihr von meinem Programmierstil? Was kann ich verbessern? (Programmiere noch nicht so lange)
Genauer:
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:

Joose

Top Contributor
In der Methode "textFeld()" der Klasse are erzeugst du ein lokales JTextField Objekt und lieferst es zurück. Diese Methode rufst du auf, wenn du dein Textfeld zur UI hinzufügen willst.
Warum arbeitest du hier nicht ähnlich wie bei dem Zählerfeld? Das ist die gleiche Logik nur steht ein anderer Wert im Feld drinnen.


Anmerkungen zum Code: Ein Methode stellt eine Tätigkeit dar, entsprechend sollten auch die Namen gewählt werden. Sprich statt "textFeld" -> "getTextfeld", statt "berechnung" -> "berechne".
Es wäre hier nicht richtig den JButton zu erweitern da du nicht die Funktionalität des Buttons ändern willst sondern einfach das "Zusammenspiel" zwischen Button und den 2 Textfeldern erreichen willst. -> deine Lösung funktioniert grundsätzlich ist aber keine schöne Programmierung ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S 100 als Summe Java Basics - Anfänger-Themen 16
I For Schleife Summe berechnen Java Basics - Anfänger-Themen 13
I aus 2 random zahlen soll nur die ungerade summe der beiden genommen werden. Java Basics - Anfänger-Themen 13
Ninum Summe Java Basics - Anfänger-Themen 3
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
N 2D Array Summe erstellen Java Basics - Anfänger-Themen 6
Q Prüfen ob Zahl als Summe von Potenzen dargestellt werden kann. Java Basics - Anfänger-Themen 20
G Java 2-dimensionalen int-Array Summe Java Basics - Anfänger-Themen 2
L Max, min, Summe und Durchschnitt berechnen Java Basics - Anfänger-Themen 4
R Summe Java Basics - Anfänger-Themen 13
M Array Summe bestimmen? Java Basics - Anfänger-Themen 14
B Summe von Property innerhalb einer Liste via Lambda Java Basics - Anfänger-Themen 1
A Summe des Arrays pd mit alternativer Schleife Java Basics - Anfänger-Themen 2
L Anzahl der Paare deren Summe = 0 ergibt berechnen Java Basics - Anfänger-Themen 0
F Summe in einem Array bestimmen Java Basics - Anfänger-Themen 3
N Quadratische Matrix inkl Summe Java Basics - Anfänger-Themen 8
F Summe aller echten Teiler Java Basics - Anfänger-Themen 2
F Summe aller echten Teiler und Zahlen zurückgeben Java Basics - Anfänger-Themen 1
M Array Summe- wo ist der Fehler ? Java Basics - Anfänger-Themen 13
K Erste Schritte Berechnung der Summe zweier Arrays Java Basics - Anfänger-Themen 15
A Summe aller ungeraden Zahlen Java Basics - Anfänger-Themen 5
J ArrayList: summe aller Spielkarten Java Basics - Anfänger-Themen 15
L (Integer) Liste nach aufsteigender Summe der Ziffern sortieren (mit Bedingung) Java Basics - Anfänger-Themen 8
K Methode: Summe von n Zahlen Java Basics - Anfänger-Themen 24
S Summe aus Kombinationen /permutationen einer Liste mit einer Obergrenze Java Basics - Anfänger-Themen 10
P Altklausur: Abfrage der Summe Java Basics - Anfänger-Themen 9
D Summe berechnen mit verändertem Wert aus Schleife Java Basics - Anfänger-Themen 1
B summe von 2 Matrizen Java Basics - Anfänger-Themen 20
V Input/Output ArrayList Summe ausgeben Java Basics - Anfänger-Themen 57
B Serial Key prüfen -> String mit privatem Key und dann abgleichen; Summe = 0 Java Basics - Anfänger-Themen 8
L Array: Summe aller geraden und ungeraden Zahlen ermitteln Java Basics - Anfänger-Themen 9
Joew0815 summe aus einem aarray Java Basics - Anfänger-Themen 4
B Summe aller Zahlen von 1 bis zu dieser Zahl (ohne while oder for schleife) Java Basics - Anfänger-Themen 4
E Summe der "Nachbarn" eines Wertes in einem Array bestimmen Java Basics - Anfänger-Themen 8
P Schleife zur Berechnung von einer Summe Java Basics - Anfänger-Themen 16
G Rekursion Summe Java Basics - Anfänger-Themen 15
D Summe von Eingaben in einer for Schleife Java Basics - Anfänger-Themen 4
J Summe mit 45 nachkommastellen Java Basics - Anfänger-Themen 8
D Summe aller Positiven Integer aus einer Liste mit ActionObject Java Basics - Anfänger-Themen 2
V Programm summe Java Basics - Anfänger-Themen 11
I Summe eines Arrays ohne Schleife Java Basics - Anfänger-Themen 4
C Summe berechnen Java Basics - Anfänger-Themen 22
A Summe aller Natürlichen Zahlen - Methode Prüfen Java Basics - Anfänger-Themen 10
D Pyramide: Summe der diagonal über ihr stehenden Zahlen! Java Basics - Anfänger-Themen 6
A summe von m bis n mit for-Schleife Java Basics - Anfänger-Themen 5
M array - summe quer Java Basics - Anfänger-Themen 9
J summe von aufeinander folgenden floats eines arrays Java Basics - Anfänger-Themen 10
B array bestimmte summe berechnen Java Basics - Anfänger-Themen 4
S Summe Berechnen Java Basics - Anfänger-Themen 6
S Summe von Zufallszahlen Java Basics - Anfänger-Themen 9
Z Summe von Vektor-Elementen Java Basics - Anfänger-Themen 5
E Array gebildete Summe ausgeben Java Basics - Anfänger-Themen 5
D 100.0% gleichmäßig aufteilen, so dass Summe 100.0% sind, nicht 99,9% oder 100,1% Java Basics - Anfänger-Themen 3
M Rekursion Summe vom Array Java Basics - Anfänger-Themen 2
W sin-funktion x-wert der summe approximieren Java Basics - Anfänger-Themen 2
M Summe eines Arrays Java Basics - Anfänger-Themen 2
U Summe produkt von einem array Java Basics - Anfänger-Themen 9
J Summe postive Zahlen und negative Zahlen Java Basics - Anfänger-Themen 12
G Summe der Ziffern einer Zahl EFFIZIENT berechnen? Java Basics - Anfänger-Themen 18
J matrix nach summe der spalten sortieren Java Basics - Anfänger-Themen 5
Antoras Zahlen mischen und mit einer for-Schleife Summe berechnen Java Basics - Anfänger-Themen 12
G Summe zweier doubles falsch? Java Basics - Anfänger-Themen 10
G Md5 Summe eines Fileobjektes bilden Java Basics - Anfänger-Themen 4
G JTable Zwischenüberschriften bzw. Summe? Java Basics - Anfänger-Themen 2
L Berechnung Summe Java Basics - Anfänger-Themen 3
A String in Zahlen/Summe umformen Java Basics - Anfänger-Themen 2
R Summe Iterative Java Basics - Anfänger-Themen 6
S Summe innerhalb eines arrays? Java Basics - Anfänger-Themen 2
M summe von squares Java Basics - Anfänger-Themen 3
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
C Parameter in verschiedenen Anzahl und Typen Java Basics - Anfänger-Themen 6
I Verschiedenen WebApp kommunizieren lassen Java Basics - Anfänger-Themen 1
Bademeister007 Elemente aus zwei verschiedenen Arrays miteinander vergleichen und gegeben falls entfernen Java Basics - Anfänger-Themen 14
S Arraylist<Object> mit verschiedenen Objects ausgeben Java Basics - Anfänger-Themen 3
P Arrays mit verschiedenen Längen miteinander dividieren. Java Basics - Anfänger-Themen 1
W Mehrfach das gleiche Attribut für ein Objekt erzeugen (mit verschiedenen Werten) Java Basics - Anfänger-Themen 2
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
A Methoden Array aus verschiedenen Methoden bearbeiten bzw. öffnen Java Basics - Anfänger-Themen 18
B Automatisch Objekte erzeugen mit verschiedenen Namen Java Basics - Anfänger-Themen 4
L Dynamische Anzahl an Arrays mit verschiedenen Namen erzeugen Java Basics - Anfänger-Themen 6
J Gleiche Methode in 2 verschiedenen Klassen - Lösung ? Java Basics - Anfänger-Themen 8
scratchy1 Argumente mit verschiedenen Schleifen ausgeben Java Basics - Anfänger-Themen 3
R OOP Instanzierung in verschiedenen Klassen Java Basics - Anfänger-Themen 8
S Daten aus zwei Verschiedenen Tabellen in eine ArrayListe Java Basics - Anfänger-Themen 4
K die Source eines Events bei verschiedenen Quellen herausfinden Java Basics - Anfänger-Themen 1
T Classpath Zwei gleiche Dateinamen in verschiedenen Projekten möglich? Java Basics - Anfänger-Themen 13
S generische methode mit verschiedenen datentypen Java Basics - Anfänger-Themen 3
I Brauche Denkanstoß: Weitergabe von Kontaktinfos aus verschiedenen Kontaktformularen von Webseiten Java Basics - Anfänger-Themen 2
D Objekte mit verschiedenen Attributen erstellen Java Basics - Anfänger-Themen 3
A Eine Variable in verschiedenen Ereignisprozeduren benutzen Java Basics - Anfänger-Themen 7
N Verweise auf Variablen in verschiedenen Threads Java Basics - Anfänger-Themen 4
J JLabels in schleife erzeugen mit verschiedenen namen? Java Basics - Anfänger-Themen 5
H Java auf verschiedenen Plattformen Java Basics - Anfänger-Themen 3
I Ausgabe in verschiedenen Entwicklungsumgebungen anders Java Basics - Anfänger-Themen 6
L Threads Thread aus verschiedenen Klassen ansprechen Java Basics - Anfänger-Themen 11
J Probleme mit verschiedenen Private Klassen Java Basics - Anfänger-Themen 3
A Methode aus verschiedenen Klassen aufrufen Java Basics - Anfänger-Themen 8
T Dynamisches abarbeiten von statischen Methode aus verschiedenen Klassen. Java Basics - Anfänger-Themen 5
B Threads Geschwindigkeit der Befehle auf verschiedenen PCs gleich machen Java Basics - Anfänger-Themen 3
U Objekte in Array erstellen und Methode in verschiedenen klassen aufrufen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben