2017-12-14 1 views
0

Ich habe ein Mittelungsprogramm erstellt, in dem die average Variable den Durchschnitt enthält. Ich möchte, dass der Wert in meiner grafischen Benutzeroberfläche ausgedruckt wird, aber meine GUI ist in einer anderen Klasse.Eine Variable abrufen und an eine andere Klasse übergeben

Ich kann nicht scheinen, um die Variable "Durchschnitt" in meiner anderen Klasse zu arbeiten. Ich bekomme "kann nicht Symbol finden" Durchschnitt - egal was ich versuche. Hier ist mein Code:

System.out.println("this is the average: "+ average); 
// this perfectly prints out the average from the 
// class "public void test" and the method "calcAverage" 

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { 
    // this is my button in a different class where I want 
    // my average to append to (print to the GUI) - and my 
    // obviously non-working attempt at it 
    JTextArea.append (test.calcAverage(average)); 
} 
+1

Was ist Ihre Fehlermeldung? Welches Verhalten erhalten Sie und was ist Ihre erwartete Leistung? Haben Sie eine Methode in Ihrer 'test' Klasse, die den Durchschnittswert zurückgibt (zB eine Methode' getAverage() ')? – AntonH

+1

Ihre GUI-Klasse muss diese Klasse nach der Variable fragen. Etwas wie 'myClass1.getAverage()' und dann in Class1 würden Sie eine Methode haben, die die Variable zurückgibt. – csmckelvey

+0

Wenn ich eine Methode in meiner Testklasse von getAverage() erstelle, hat es den Fehler "kann Symbol nicht finden - variabler Durchschnitt" - das ist alles was ich habe, ist das falsch? 'public double getAverage() { Durchschnittsrendite; } ' –

Antwort

0

ich die durchschnittliche möchte in meiner grafischen Benutzeroberfläche werden ausgedruckt, aber meine gui ist in einer anderen Klasse.

Lassen Sie die gui-Klasse eine Callback-Methode bereitstellen, mit der Sie die Informationen visuell aktualisieren können.

In Swing:

public MyFrame extends JFrame implements MyFrameCallback{ 

    public void updateAverage(double average){ 
     ... // update the graphical widget 
    } 
} 

wo MyFrameCallback ist eine Schnittstelle, wie zum Beispiel:

public interface MyFrameCallback{ 
    void updateAverage(double average); 
} 

Nun, wie Sie die Modellklasse erstellen, die wir MyAverageModel nennen, fügen MyFrameCallback in seinem Konstruktor:

Jetzt, wie Sie den Durchschnitt berechnen Alter in MyAverageModel, können Sie den Rückruf der GUI aufrufen:

public calculAndUpdateAverage(){ 
    ... 
    double average = ...; 
    myFrameCallback.updateAverage(average); 
} 
+0

Versucht dies zu tun und es gibt überall Fehler. Sicherlich ist es viel einfacher, einfach irgendwo anders eine Variable auszudrucken. Danke trotzdem für deine Zeit. –

+0

Ich gab dir einen sauberen Weg. Sie können auch schnell und schmutzig machen: make 'calcAverage()' public static. – davidxxx

+0

kann ich nicht .. das stoppt dann meine Arrays zu arbeiten. –

Verwandte Themen