Methode in setText() setzen

lubi27X

Aktives Mitglied
Hallo zusammen. Ich bin gerade dabei eine GUI zu erstellen. Nun habe ich in einer ComboxBox einen ActionListener hinzugefügt und möchte in der setText() Methode eine andere Methode ausführen, die sonst immer über die Konsole ausgegeben wurde.
1619210872160.png

Leider zeigt der mir in Zeile 102 eine Fehlermeldung an: The method setText(String) in the type JTextComponent is not applicable for the arguments (void)

Die Methode "showCatPaymentList() " gibt über die Konsole folgendes aus:
1619210964825.png

Nun will ich aber, dass das Ergebnis in der GUI, sprich über txt ausgegeben wird.

Wie gebe ich die Methode aus? toString funktioniert leider auch nicht
 
Wie gebe ich die Methode aus? toString funktioniert leider auch nicht

Du meinst sicher "Wie gebe ich das Ergebnis der Methode aus?".

Entsprechend der Fehlermeldung hat die Methode showCatPaymentList den Rückgabetyp void (nichts).

Entweder gibt es eine andere Methode
[CODE lang="java" title="erforderliche Methode"]double getCatPaymentSum() {
...
}[/CODE]
oder Du musst selbst solch eine Methode schreiben.
 
Kleiner Hinweis abseits: Versuche bitte Text als Text zu posten und nicht als Screenshot. Weil wenn du Text als Text postest, koennen es auch Leute lesen und dir helfen welche zum Beispiel einen Screenreader einsetzen.
Könnte ich die Methode nicht einfach überschreiben, damit sie String zurückgibt?
Du musst sie *aendern* damit sie einen String zurueck gibt, dann darin deinen String zusammen bauen und diesen dann retournieren. Du koenntest sie auch ueberschreiben und einen anderen Rueckgabewert angeben, aber das funktioniert nur weil der Rueckgabewert kein Teil der Methoden-Signatur ist in Java, falls du hier wirklich "ueberschreiben" meinst.

Also zum Verstaendnis, deine Methode hat im Moment keinen Reuckgabewert, daher "void", also nichts. Alles was darin passiert, also die Ausgabe auf die Konsole, kann nicht direkt verwendet werden. Du muesstest also wirklich den String welchen du auf die Konsole ausgibst retournieren anstatt diesen auf die Konsole auszugeben.
 
Danke für die ausführliche Erklärung Robert. Ich werde keine Screenshots mehr reinstellen, hast recht. Ich habe immer versucht void Methoden zu schreiben, daher weiß ich gerade nicht, wie ich meine Rückgabe, also das was in der Konsole ausgegeben wird, in einem String speichern kann. Diese Methode möchte ich nun in String als Rückgabetyp ändern:
Java:
public void showCatPaymentList() {

        Collections.sort(catPaymentList, new ListSortedByDate());
        
        System.out.println("Kategorie: " + this.getName());
        
        //zusätzlich
        double sum = 0;
        for( Payment p: catPaymentList) {
            String s = null;
            if (p instanceof Deposit)
                s = "+";
            if (p instanceof Withdrawal)
                s = "-";
            System.out.println("Datum: " + p.getDate()+": "+s+p.amount + "€");
            sum = sum + p.amount;
        }
        //Zusätzliche Ausgabe
        System.out.println(this.name + " Summe an Ausgaben: " + sum + "€\n");
    }
 
Du müsstest den Rückgabe Typ der Methode erst einmal ändern. Die Signatur für deine Methode würde dann so aussehen:
Java:
public String showCatPaymentList()

Dann führst du oben einen String erg = ""; ein und speicherst das was du speichern möchtest in diese Variable.
Am Ende kommt dann ein return erg; um den String zurück zu geben.
 
Nice, hat wunderbar funktioniert. Danke BasBeg. Der Code sieht jetzt so aus:
Java:
//showCatPaymentList() mit String als Rückgabetyp
    public String showCatPaymentLists() {
        String erg = "";
        Collections.sort(catPaymentList, new ListSortedByDate());
        
        erg = ("Kategorie: " + this.getName() + "\n");
        
        //zusätzlich
        double sum = 0;
        
        for(Payment p: catPaymentList) {
            String s = null;
            if (p instanceof Deposit)
                s = "+";
            if (p instanceof Withdrawal)
                s = "-";
            erg = erg + "Datum: " + p.getDate()+": "+s+p.amount + "€" + "\n";
//            System.out.println("Datum: " + p.getDate()+": "+s+p.amount + "€");
            sum = sum + p.amount;
        }
        //Zusätzliche Ausgabe
        erg = erg + (this.name + " Summe an Ausgaben: " + sum + "€\n");
        return erg;
    }
 

Zurück
Oben