ActionPerformed Methode ohne Rückgabewert

Status
Nicht offen für weitere Antworten.
A

Alex2007

Gast
Hi,

bin gerade an meinem ersten Java Projekt und scheitere ein wenig an den ActionListenern.

Bei klick auf einen Button wird folgende actionPerformed Methode ausgeführt:

Code:
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		Wuerfel wuerfel = new Wuerfel();
		int x = wuerfel.wuerfeln();		
	}

Den Wert der Variable x brauche ich als Rückgabe. Leider hat die Methode ja aber keinen Rückgabewert :( Wie übergebe ich mein x? Hat irgendjemand eine Idee?

Ich bin für jeden Tipp dankbar!

Viele Grüße
Alex
 

Niki

Top Contributor
Was willst du denn anschließend mit dem x machen? Wenn du irgend eine Verarbeitung damit anstoßen willst musst du innerhalb der actionPerformed Methode deine Verarbeitung mit dem x aufrufen.
Beschreib einfach was du genau machen willst, wenn der Button gedrütckt wurde
 

L-ectron-X

Gesperrter Benutzer
Jedes Mal neue Würfel zu erzeugen ist gar nicht nötig. Du kaufst dir ja auch nicht vor jedem Würfeln ein neues Mensch-Ärger-Dich-Nicht-Spiel. Rufe in der actionPerformed()-Methode am besten eine Methode
Code:
private void wuerfeln() {

}
auf, in der du dann per Zufall die gewürfelten Augen bestimmst.
Der Wert lässt sich dann bspw. in eine andere Methode übergeben oder in einer Instanzvariablen speichern.
 
A

Alex2007

Gast
Hallo,

das klingt natürlich logisch. Ich rufe also nur die Methode wuerfeln() auf. Ich möchte den Wert x letztendlich in der Gui Klasse ausgeben. Vorher führe ich innerhalb der actionPerformed Methode mit x noch einige Rechnungen durch. Nur wie kriege ich das x letztendlich in die Gui Klasse?

Vielen Dank
Alex2007
 

Niki

Top Contributor
Indem du in der GUI Klasse eine Methode hast die z.B setMyX heißt (setX würde ich nicht nehmen, da diese Methode von vielen GUI Klassen bereits benötigt wird). Dieser Methode setzt du den Wert und zeigst ihn in deinem Label an. Die GUI Klasse muss natürlich bekannt sein (als Attribut über den Konstruktor setzen)
 
A

Alex2007

Gast
Mmh so ganz kann ich mir das noch nicht vorstellen...
Kannst du das vielleicht mit zwei Zeilen Code untermauern?
 

Niki

Top Contributor
Code:
public MainFrame extends JFrame{

  private JLabel jlValue = null;

  private JButton jbCalc = null;

  public MainFrame(){
    super("Mein Titel");
    guiInit();
    pack();
    setLocationRelativeTo(null);
  }

  private void guiInit(){
    jlValue = new JLabel("Ergebnis: ");
    jbCalc = new JButton("Calculate");
    jbCalc.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent e){
        wuerfeln();
      }
    });

    Container cont = getContentPane();
    cont.add(jlValue);
    cont.add(jbCalc);

  }

  private void wuerfeln(){
    int x = //Hier Berechnungen machen
    jlValue.setText("Ergebnis: " + x);
  }


}

Ich muss jetzt leider weg und kann erst morgen Vormittag weiter helfen. Vielleicht hilft dir aber jemand anderer bis dahin :)
 
A

Alex2007

Gast
Ah jetzt verstehe ich dich. Aber sollte ich die actionPerformed Methode nicht lieber in eine eigene Klasse packen? Von wegen Trennung von Gui und Programmlogik?
Kann ich das Ergebnis auch irgendwie in einen int verpacken? Also so das ich nicht ein Objekt vom Typ jlValue, sondern zum Schluss einen int habe?

Echt klasse wie einem hier geholfen wird!
Danke Alex
 
A

Alex2007

Gast
Hmm ich bin hier immer noch am Knabbern. Ich brauche die Ausgabe definitiv als int. Das kann doch nicht so schwierig sein. Kann ich nicht einfach irgendwie eine Methode anstoßen, die mir dann einen int zurückgibt?
Finde das von den Java Entwicklern irgendwie nicht besonders gut gelöst!
 

Niki

Top Contributor
Alex2007 hat gesagt.:
Finde das von den Java Entwicklern irgendwie nicht besonders gut gelöst!

Uhhh, gefährliche Aussage!

jlValue ist ein JLabel in der GUI, der nur den Wert ausgibt. Natürlich kannst du den Wert den du hast weiter verarbeiten wie du willst. Du kannst auch eine eigene Klasse mit der actionPerformed Methode machen.

Vielleicht hilft dir ja das weiter:

Code:
public MainFrame extends JFrame{

  private JLabel jlValue = null;

  private JButton jbCalc = null;

  public MainFrame(){
    super("Mein Titel");
    guiInit();
    pack();
    setLocationRelativeTo(null);
  }

  private void guiInit(){
    jlValue = new JLabel("Ergebnis: ");
    jbCalc = new JButton("Calculate");
    jbCalc.addActionListener(new ActionHandler(this));

    Container cont = getContentPane();
    cont.add(jlValue);
    cont.add(jbCalc);

  }

  
  public void setValueFromDice(int value){
    jlValue.setText("Ergebnis: " + x);
  }

}

public class ActionHandler implements ActionListener{

  private MainFrame gui = null;

  public ActionHandler(MainFrame gui){
    this.gui = gui;
  }

  public void actionPerformed(ActionEvent e){
    wuerfeln();
  }

  private void wuerfeln(){
    int x = holeInt();

    //du kannst hier natürlich noch alles mögliche mit x machen! setValueFromDice zeigt den Wert nur in der GUI an!
    gui.setValueFromDice(x);
  }


  //Diese Methode liefert dir jetzt dein int!
  private int holeInt(){
    int x = (int)(Math.random() * 100);

    return x;
  }
 
A

Alex2007

Gast
Hey Niki,

vielen Dank für deine Hilfe. Sitze leider immer noch am gleichen Problem und muss glaube ich etwas weiter ausholen um mein Problem zu beschreiben.
Ich versuche mich gerade an einem kleinen Gesellschaftsspiel.
Meine Gui Klasse stellt das Spielbrett und die Spielfiguren dar. Klickt nun einer auf den Button Würfeln, werden in der ActionPerformed Methode einige Berechnungen ausgeführt. Das klappt alles auch wunderbar. Letztendlich kommt ein int Wert als Ergebnis raus. Diesen brauche ich nun in der Gui Klasse um festzulegen an welcher Position die Spielfigur nach dem Wurf dargestellt werden soll. Dazu nutze ich das GridBagLayout.
Ich brauche diesen umbedingt in der Gui Klasse, sonst kann ich nicht auf den Layoutmanager zurückgreifen.

Java ist schon echt hart......
Vielleicht sollte man sowas ja auch komplett anders lösen.
 

Niki

Top Contributor
Genau das hab ich doch oben schon gezeigt. Du brauchst in der Klasse wo die actionPerformed Methode implementiert ist die Referenz auf die GUI-Klasse. Wenn du deine Berechnungen durchgeführt hast kannst du der GUI-Klasse den neuen Wert übergeben. Die GUI-Klasse muss dann irgendwas mit dem neuen Wert machen. Diese wäre in dem Fall von meiner Klasse "gui.setValueFromDice(x);"
 
A

Alex2007

Gast
Ich sage nur danke, danke, danke!
Jetzt funktioniert es endlich. Musste mich erstmal in deinen Quellcode vertiefen. Ein wenig anders, als in meinem Lehrbuch...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Wie werte vergleichen, die in actionPerformed-Methode hängen ? Java Basics - Anfänger-Themen 4
M Threads Thread.Sleep Problem im Zusammenhang mit GUI/ActionPerformed-Methode Java Basics - Anfänger-Themen 4
J Werte an Methode übergeben und gleichzeitig ActionPerformed einbeziehen. Java Basics - Anfänger-Themen 14
M OOP ActionPerformed Methode aus anderer AP aufrufen? Java Basics - Anfänger-Themen 5
S Objekt an actionPerformed Methode übergeben Java Basics - Anfänger-Themen 7
R ActionPerformed: Methode ausführen Java Basics - Anfänger-Themen 3
R Thread in ActionPerformed-Methode unbekannt? Java Basics - Anfänger-Themen 4
H Frage zur Methode: actionPerformed Java Basics - Anfänger-Themen 2
B Exception Handling in der ActionPerformed-Methode Java Basics - Anfänger-Themen 7
R actionPerformed wird nicht ausgeführt Java Basics - Anfänger-Themen 5
F actionPerformed() zur richtigen Zeit Java Basics - Anfänger-Themen 6
D JLabel ändern in actionperformed Java Basics - Anfänger-Themen 2
D KeyListener nicht mehr aktiv nach ActionPerformed Java Basics - Anfänger-Themen 2
J In actionPerformed Zugriff auf öffentlich Methoden der Klasse Java Basics - Anfänger-Themen 4
Z Kann actionPerformed(ActionEvent) nicht überschreiben Java Basics - Anfänger-Themen 8
M Variablen via actionPerformed mit Buttons ändern Java Basics - Anfänger-Themen 7
R Wie es anstellen das ActionPerformed einen Wert zurückgibt? Java Basics - Anfänger-Themen 8
A lokale Variable innerhalb "actionPerformed()" Java Basics - Anfänger-Themen 10
S actionPerformed(ActionEvent ev) Java Basics - Anfänger-Themen 4
Houly while Schleife im ActionPerformed Event Java Basics - Anfänger-Themen 8
0 Fehlermeldung: SteuerungsPanel$ButtonHandler.actionPerformed(Steu erungsPanel.java: Java Basics - Anfänger-Themen 2
R Wie getText mit actionPerformed verwenden? Java Basics - Anfänger-Themen 3
C actionPerformed(null) Java Basics - Anfänger-Themen 6
D Auf Buttondruck (actionperformed) painten Java Basics - Anfänger-Themen 5
I actionPerformed funktioniert nicht Java Basics - Anfänger-Themen 13
DeeDee0815 JRadioButton, actionPerformed und Textfelder Java Basics - Anfänger-Themen 2
S Java GUI: Probleme mit EventListener und actionPerformed Java Basics - Anfänger-Themen 3
B actionPerformed und ComboBoxen Java Basics - Anfänger-Themen 7
J JMenu + ActionPerformed + ConntentPane Java Basics - Anfänger-Themen 4
D Fehlersuche actionPerformed Java Basics - Anfänger-Themen 6
S actionPerformed und JCheckBox Java Basics - Anfänger-Themen 4
N ActionListener - ActionPerformed - if soure= .... Java Basics - Anfänger-Themen 6
M Übergeben einer Variable an actionPerformed(ActionEvent e)? Java Basics - Anfänger-Themen 5
U actionPerformed - Source verständlich Java Basics - Anfänger-Themen 8
C Problem mit actionPerformed Java Basics - Anfänger-Themen 4
T Rekursive Methode Java Basics - Anfänger-Themen 13
Ü Methode soll Quadrat aus der Summer zurückgeben Java Basics - Anfänger-Themen 10
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
Leyla Spezifischte Methode Java Basics - Anfänger-Themen 16
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
L Variablenwerte aus einer Methode übergeben Java Basics - Anfänger-Themen 2
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
T Aufruf der Methode einer Oberklasse, wenn sie in der Unterklasse überschrieben ist. Polymorphie. Java Basics - Anfänger-Themen 2
C Zugriff auf Methode Java Basics - Anfänger-Themen 2
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
M Methode sperren bis ein Kriterium erfüllt wurde Java Basics - Anfänger-Themen 3
D Switch Case Methode aufrufen Java Basics - Anfänger-Themen 3
C Unbekannte Methode add bei Klasse die JTree erweitert Java Basics - Anfänger-Themen 14
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
Ostkreuz Wieso wird die Methode nochmal aufgerufen? Java Basics - Anfänger-Themen 5
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
Say super.methode / super.variable und super(variable) Java Basics - Anfänger-Themen 2
B Wie kann ich folgende Klasse/Methode per Button ausführen? Java Basics - Anfänger-Themen 1
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
til237 Iterative Methode in rekursive Methode umschreiben Java Basics - Anfänger-Themen 4
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
D next() Methode mehrfach verwenden Java Basics - Anfänger-Themen 1
Ostkreuz Methoden Von Dezimal zu Hexadezimal Methode toHex Java Basics - Anfänger-Themen 2
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
N Throw an Main Methode übergeben Java Basics - Anfänger-Themen 7
M Methoden Methode 'wiederhole' nicht gefunden (Uebersetzungsfehler) Java Basics - Anfänger-Themen 1
H Zu langen String aufteilen - bequeme Methode? Java Basics - Anfänger-Themen 14
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
T Variable von Objekten in einer Methode überprüfen Java Basics - Anfänger-Themen 26
M Anzahl Kommandozeilenparamter mittels Methode Java Basics - Anfänger-Themen 11
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
J Die statische Main-Methode ändert Instanzvariable? Java Basics - Anfänger-Themen 10
D Methode aus dem Aufrufer aufrufen Java Basics - Anfänger-Themen 1
T IOStreams read(byte[]b) methode Java Basics - Anfänger-Themen 2
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
D Warum kann ich hier nicht auf die Methode zugreifen? Java Basics - Anfänger-Themen 5
M generate Methode für Streams Java Basics - Anfänger-Themen 6
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
I Optionaler Parameter bei Methode, der nur optional ist? Java Basics - Anfänger-Themen 6
berserkerdq2 Wozu benötigt man den BiPredicate, kann ich nicht einfach eine normale Methode nutzen, statt BiPredicate? Java Basics - Anfänger-Themen 3
T Linked List set-Methode Java Basics - Anfänger-Themen 2
D Arrays an replaceAll-Methode übergeben Java Basics - Anfänger-Themen 12
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
viktor1 Methoden Methode schreiben static void readText (String filename) {...} zu WordHistogramSample.java Java Basics - Anfänger-Themen 13
W Equals-Methode überschreiben bei composition Java Basics - Anfänger-Themen 20
V Hilfe bei Implementierung einer boolean Methode Java Basics - Anfänger-Themen 6
T Methode, die prüft ob in einem Int-Array maximal 2 Zahlen enthalten sind, die größer als ihr Vorgänger sind Java Basics - Anfänger-Themen 5
V Methoden printChar Methode mit Rückgabetyp void Java Basics - Anfänger-Themen 26
F Graph Tiefensuche Methode Java Basics - Anfänger-Themen 7
Jambolo Methode, welche die 3 letzten Parameter Werte speichert Java Basics - Anfänger-Themen 20
berserkerdq2 wie funktioniert contenthandler, was muss ich bei der Methode startElement und endElement tun? Java Basics - Anfänger-Themen 11
M Warum return die Methode den Wert nicht Java Basics - Anfänger-Themen 5
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben