Methoden ActionListener wird übersprungen

Kenta1561

Bekanntes Mitglied
Hallo,

ich habe in zwei Klassen folgende Codes geschrieben und habe gemerkt, dass mein ActionListener in der zweiten Klasse irgendwie übersprungen wird. (Bin noch ein Anfänger und verstehe nicht ganz warum er übersprungen wird):

Main-Klasse:
Java:
package de.kenta1561.main;

public class Main {

    public static void main(String[] args) {

        AListener al = new AListener();

        int thisValue = al.value();
        System.out.println(thisValue);

    }
}

Zweite Klasse mit dem ActionListener was übersprungen wird:
Java:
package de.kenta1561.main;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class AListener {

    private JCheckBox box1 = new JCheckBox();
    private JCheckBox box2 = new JCheckBox();

    public int value;

    int value() {

        JFrame frame = new JFrame("Checkboxen");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setLayout(new FlowLayout());
        JButton button = new JButton();
        button.setText("Ausgeben");
        frame.add(box1);
        frame.add(box2);
        frame.add(button);
        frame.pack();
        frame.setVisible(true);
        button.addActionListener(new ActionListener() { //Dieser ActionListener
            @Override
            public void actionPerformed(ActionEvent e) {
                if(box1.isSelected()) {
                    value = 1999;
                } else if(box2.isSelected()) {
                    value = 2000;
                }
            }
        });

        return value;

    }
}

Konkret heißt das für mich: Für den Wert "value" wird immer 0 ausgegeben, nicht etwas 1999 oder 2000.

Was ich mit diesem Programm machen will: Fenster mit 2 JCheckBoxen wird geöffnet, erst, wenn man den Bestätigungsknopf drückt wird mittels isSelected() gecheckt welche JCheckBoxen angekreuzt wurden: Wenn box1 angekreuzt wurde, soll "value" 1999 betragen, bei box2 2000. "value" soll dann am Ende wieder der Main-Klasse übergeben werden.
 
K

kneitzel

Gast
Du hast die Logik nicht verstanden. Deine Funktion value erstellt das Fenster und endet dann. Daher wird 0 zurück gegeben. Der code des addActionListener wird ja erst später aufgerufen.

Das addActionListener erstellt ja sozusagen nur einen Plan, das später etwas passieren soll. Das ist vergleichbar mit dem folgenden Szenario:
Du stellst eine Spardose auf mit einer Anweisung, dass jeder, der vorbei kommt, Geld einwerfen soll. Und dann prüfst Du direkt den Inhalt. Aber es muss doch erst einer vorbei kommen!

So muss bei Dir erst jemand den Knopf drücken...
 

Kenta1561

Bekanntes Mitglied
Ok, erstmal danke für die Antwort.
Wie kann ich das dann richtig machen? (Also dass der Wert ERST zurückgegeben wird nachdem ActionListener aufgerufen wurde und darin logischerweise die Werte verändert wurden)

MfG
Kenta1561
 
K

kneitzel

Gast
Das normale Vorgehen ist, dass man eben in der eigentlichen Applikation einfach nur das Fenster erzeugt und man auf jede Rückgabe verzichtet. Das, was mit dem Wert geschehen soll, wird dann halt in dem actionListener gemacht. Sprich: Dein System.out.println gehört in das actionPerformed.

Wobei es aber natürlich auch möglich ist, sogenannte modale Dialoge zu erstellen. Das geht mit der Klasse JDialog. Ergebnis wäre dann so etwas wie die InputBox um Werte einzugeben.
https://docs.oracle.com/javase/tutorial/uiswing/misc/modality.html

Aber wenn Du nur eine Auswahl möchtest, ist evtl. JOptionPane.showOptionDialog von Interesse.
Die Übersichtsseite über Dialoge enthält diese und andere Möglichkeiten:
https://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html

Nun kann man hin gehen und statt JFrame ein JDialog nutzen. JDialog.setVisible(true) blockiert, d.h. der Aufruf muss nach hinten. Der ActionListener braucht den dialog um diesen zu verstecken (woduch dann setVisible(true) sich endlich beendet) so dass dies zu einer Instanzvariable wird. frame zu dialog umbenannt. Close Action kann hier weg gelassen werden (oder müsste auf einen anderen Wert gesetzt werden, da der vorhandene Wert nicht zulässig ist!).
Der Konstruktor braucht ein übergeordnetes Fenster, da wir nichts haben, ein null Wert. Da der Parameter von drei möglichen Typen sein kann und null keinen Typ hat, müssen wir einen Cast machen, so dass klar ist, welchen Konstruktor er nehmen soll. Dann noch der Titel und das Flag für modalen Dialog.

Das waren die durchgeführten Änderungen auch schon:
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class AListener {

    private JCheckBox box1 = new JCheckBox();
    private JCheckBox box2 = new JCheckBox();

    private int value;
    private JDialog dialog;

    int value() {

        dialog = new JDialog((Frame) null, "Checkboxen", true);
        dialog.setLocationRelativeTo(null);
        dialog.setLayout(new FlowLayout());
        JButton button = new JButton();
        button.setText("Ausgeben");
        dialog.add(box1);
        dialog.add(box2);
        dialog.add(button);
        dialog.pack();
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if(box1.isSelected()) {
                    value = 1999;
                } else if(box2.isSelected()) {
                    value = 2000;
                }
                dialog.setVisible(false);
            }
        });

        dialog.setVisible(true);

        return value;

    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z ActionListener wird nicht erkannt? Java Basics - Anfänger-Themen 5
C ActionListener wird nicht ausgeführt Java Basics - Anfänger-Themen 2
E ActionListener Java Basics - Anfänger-Themen 4
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
U HILFE! - per ActionListener Felder enablen....... Java Basics - Anfänger-Themen 5
C JButton reagiert nicht auf actionListener Java Basics - Anfänger-Themen 15
H Eine Methode über Actionlistener beenden Java Basics - Anfänger-Themen 8
J Array Actionlistener Java Basics - Anfänger-Themen 9
J ActionListener von JCheckBox im Knoten von JTree funktioniert nicht Java Basics - Anfänger-Themen 2
P Erste Schritte ActionListener Java Basics - Anfänger-Themen 2
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
J Erste Schritte Actionlistener für tbar/ JButton Java Basics - Anfänger-Themen 15
krgewb ActionListener Java Basics - Anfänger-Themen 1
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
T Konsolenscanner startet nicht durch Aufruf von Actionlistener Java Basics - Anfänger-Themen 4
F ActionListener mit Files etc Java Basics - Anfänger-Themen 12
N Probleme mit dem ActionListener Java Basics - Anfänger-Themen 4
CptK Auf ActionListener von anderer Klass aus zugreifen Java Basics - Anfänger-Themen 5
F Mehrere Buttons mit einem ActionListener abdecken Java Basics - Anfänger-Themen 24
U ActionListener mit JMenuItems verknüpfen Java Basics - Anfänger-Themen 1
S in ActionListener auf Eingabe aus anderem Frame warten Java Basics - Anfänger-Themen 2
L Problem bei Java-ActionListener Java Basics - Anfänger-Themen 4
J Anfänger: ActionListener und ProcessBuilder machen Probleme Java Basics - Anfänger-Themen 6
D Einen Wert unter einen ActionListener weitergeben Java Basics - Anfänger-Themen 1
T Übernahme einer Variablen im ActionListener/ActionEvent Java Basics - Anfänger-Themen 2
JavaNewbie2.0 ActionListener Java Basics - Anfänger-Themen 11
Voreck Actionlistener problem Java Basics - Anfänger-Themen 1
G Im ActionListener eine "äußere" Variable verändern Java Basics - Anfänger-Themen 13
T Fehler beim ActionListener Java Basics - Anfänger-Themen 2
M public static int in ActionListener Java Basics - Anfänger-Themen 6
S actionlistener timer Java Basics - Anfänger-Themen 9
J Interface ActionListener in eigener Klasse Java Basics - Anfänger-Themen 27
P aus ActionListener auf HauptFrame zugreifen Java Basics - Anfänger-Themen 4
A Klassen Bool Actionlistener Java Basics - Anfänger-Themen 2
S actionlistener Java Basics - Anfänger-Themen 29
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
J ActionListener Java Basics - Anfänger-Themen 5
A ActionListener Java Basics - Anfänger-Themen 9
R Problem mit ActionListener für Buttons Java Basics - Anfänger-Themen 5
T ActionListener Source vergleichen Java Basics - Anfänger-Themen 8
T Frage zum ActionListener Java Basics - Anfänger-Themen 5
R ActionListener mit for Schleife füllen. Java Basics - Anfänger-Themen 4
K Button's mit versch. Aufgaben/ActionListener Java Basics - Anfänger-Themen 12
S KeyListener/ActionListener/paint()/repaint() Java Basics - Anfänger-Themen 3
I ActionListener reagiert nicht Java Basics - Anfänger-Themen 6
N Probleme mit ActionListener und Logischer Abfrage Java Basics - Anfänger-Themen 4
D Erste Schritte Buttons mit actionlistener Problem Java Basics - Anfänger-Themen 3
S JButton mit ActionListener Java Basics - Anfänger-Themen 5
S ActionListener, Methoden und Variablen Java Basics - Anfänger-Themen 4
X Variablen Actionlistener | Variablen-namen Java Basics - Anfänger-Themen 5
G ActionListener implementieren Java Basics - Anfänger-Themen 12
T Erste Schritte Berechnete Variable im ActionListener zurückführen Java Basics - Anfänger-Themen 6
D Panel sichtbar/unsichtbar machen im ActionListener Java Basics - Anfänger-Themen 3
U JFrame durch ActionListener erweitern Java Basics - Anfänger-Themen 4
M Button , actionlistener Java Basics - Anfänger-Themen 11
P Erste Schritte JTable mit Daten aus Acces DB füllen und Actionlistener einsetzen Java Basics - Anfänger-Themen 29
M Actionlistener Java Basics - Anfänger-Themen 9
D Problem mit ausgelagertem Actionlistener Java Basics - Anfänger-Themen 4
D KeyListener und ActionListener Problem Java Basics - Anfänger-Themen 6
M Klassen Durch den ActionListener das GUI einer anderen Klasse verändern Java Basics - Anfänger-Themen 8
T NullPointerException im ActionListener Java Basics - Anfänger-Themen 3
C Erste Schritte GUI - ActionListener - Exception Nullpointer Java Basics - Anfänger-Themen 5
Kenan89 ActionListener in eigene Klasse Java Basics - Anfänger-Themen 8
E JMenu ActionListener reagiert nicht? Java Basics - Anfänger-Themen 6
V ActionListener in einer for-Schleife Java Basics - Anfänger-Themen 2
S Erste Schritte ActionListener auf Buttons einrichten Java Basics - Anfänger-Themen 3
M Variablen Variable lässt sich durch ActionListener nicht ändern Java Basics - Anfänger-Themen 5
P ActionListener Action Event Java Basics - Anfänger-Themen 5
L ActionListener zerschießt AnchorLayout Java Basics - Anfänger-Themen 8
D ActionListener braucht zwei Klicks auf Button??? Java Basics - Anfänger-Themen 2
M Methoden Timer in ActionListener aufrufen Java Basics - Anfänger-Themen 2
Y Actionlistener passt nicht zu Dataset Java Basics - Anfänger-Themen 6
W Problem mit FileWriter / ActionListener Java Basics - Anfänger-Themen 6
F actionListener Java Basics - Anfänger-Themen 3
T ActionListener auslagern Java Basics - Anfänger-Themen 14
S Actionlistener funktionieren nicht in der .jar Java Basics - Anfänger-Themen 9
E ActionListener abwarten lassen? Java Basics - Anfänger-Themen 11
E ActionListener in anderer Klasse erkennen Java Basics - Anfänger-Themen 13
H ActionListener Verbesserung möglich? (This) Java Basics - Anfänger-Themen 3
E ActionListener erkennt instanz nicht Java Basics - Anfänger-Themen 9
V ActionListener bei vielen Modulen Java Basics - Anfänger-Themen 3
J ActionListener Java Basics - Anfänger-Themen 2
T JLabel durch ActionListener ändern Java Basics - Anfänger-Themen 4
S ActionListener Java Basics - Anfänger-Themen 4
U actionListener - eine Kleine Frage Java Basics - Anfänger-Themen 7
K Actionlistener Java Basics - Anfänger-Themen 7
M ActionListener außerhalb des EDT ausführen Java Basics - Anfänger-Themen 2
A ActionListener im JMenu - Problem Java Basics - Anfänger-Themen 2
M ActionListener reagiert nicht Java Basics - Anfänger-Themen 4
N ActionListener + GUI Java Basics - Anfänger-Themen 8
H Bewegtes Bild im ActionListener [Problem] Java Basics - Anfänger-Themen 12
D Liste+ActionListener Java Basics - Anfänger-Themen 6
L wie Jframe an ActionListener übergeben Java Basics - Anfänger-Themen 4
U ActionListener und KeyListener - KeyListener funktioniert nicht Java Basics - Anfänger-Themen 2
A JButton ActionListener nach einmaligem Ausführen zurücksetzen Java Basics - Anfänger-Themen 13
Luk10 Problem mit ActionListener Java Basics - Anfänger-Themen 6
R Viereck zeichnen über TextField-Eingabe /ActionListener Java Basics - Anfänger-Themen 9
C ActionListener problem beim starten von programmen Java Basics - Anfänger-Themen 3
C ActionListener problem Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben