Input/Output If-Statement wird übersprugen

Kenta1561

Bekanntes Mitglied
Hallo,

ich habe Folgendes geschrieben:
Java:
package main;

import javax.swing.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

public class Main {

    static String result;

    public static void main(String[] args) {

        JFrame frame = new JFrame("Title");
        frame.setSize(500,300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();

        String[] language = {"Java", "JavaScript", "C++", "PHP", "HTML"};

        JComboBox jcb1 = new JComboBox(language);
        panel.add(jcb1);
        frame.add(panel);

        frame.setVisible(true);

        jcb1.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                if(jcb1.getSelectedItem().equals("Java")) {
                    result = "Du hast Java ausgewaehlt.";
                } else if(jcb1.getSelectedItem().equals("JavaScript")) {
                    result = "Du hast JavaScript ausgewaehlt.";
                } else if(jcb1.getSelectedItem().equals("C++")) {
                    result = "Du hast C++ ausgewaehlt.";
                } else if(jcb1.getSelectedItem().equals("PHP")) {
                    result = "Du hast PHP ausgewaehlt.";
                } else if(jcb1.getSelectedItem().equals("HTML")) {
                    result = "Du hast HTML ausgewaehlt.";
                } else {
                    System.exit(1);
                }
            }
        });

        System.out.println(result);

    }
}

Ich will, dass der String "result" erst dann ausgegeben wird, wenn result auch durch das If-Statement gesetzt wird, jedoch scheint es so, als ob mein If-Statement übersprugen wird, weil in der Konsole "null" rauskommt. Wie kann ich mein Code so ändern, dass erst ein Text ausgegeben wird, wenn "result" auch gesetzt wurde?
 
M

mickedplay

Gast
Dein System.out.println(result) wird nachdem der ItemListener gesetzt wurde aufgerufen. Der ItemListener jedoch (und alles da drin), wird aber erst dann "gefeuert", wenn du etwas in der ComboBox wechselst. Und das passiert nicht beim Initialisieren.

Mach's so:
Java:
package main;

import javax.swing.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

public class Main {

    static String result;

    public static void main(String[] args) {

        JFrame frame = new JFrame("Title");
        frame.setSize(500,300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();

        String[] language = {"Java", "JavaScript", "C++", "PHP", "HTML"};

        JComboBox jcb1 = new JComboBox(language);
        panel.add(jcb1);
        frame.add(panel);

        frame.setVisible(true);

        jcb1.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                if(jcb1.getSelectedItem().equals("Java")) {
                    result = "Du hast Java ausgewaehlt.";
                } else if(jcb1.getSelectedItem().equals("JavaScript")) {
                    result = "Du hast JavaScript ausgewaehlt.";
                } else if(jcb1.getSelectedItem().equals("C++")) {
                    result = "Du hast C++ ausgewaehlt.";
                } else if(jcb1.getSelectedItem().equals("PHP")) {
                    result = "Du hast PHP ausgewaehlt.";
                } else if(jcb1.getSelectedItem().equals("HTML")) {
                    result = "Du hast HTML ausgewaehlt.";
                } else {
                    System.exit(1);
                }
                System.out.println(result);
            }
        });
    }
}

Ich würde deinen ItemListener mal sehr stark abkürzen, als Hinweis :)
Java:
jcb1.addItemListener(e -> {
            System.out.println("Du hast " + jcb1.getSelectedItem().toString() + " ausgewaehlt.");
        });
 
Zuletzt bearbeitet von einem Moderator:

Kenta1561

Bekanntes Mitglied
Danke für die Antwort, was soll ich aber machen, wenn ich das über zwei Klassen machen will?:

Main-Klasse:
Java:
package main;

public class Main {

    public static void main(String[] args) {

        GUI gui = new GUI();
        String receivedResult = gui.connect();

        System.out.println(receivedResult);

    }

}

Zweite Klasse:
Java:
package main;

import javax.swing.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

/**
* Created by Kenta1561 on 2016/05/13.
*/
public class GUI {

    String result;

    public String connect() {

        JFrame frame = new JFrame("Title");
        frame.setSize(500,300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();

        String[] language = {"Java", "JavaScript", "C++", "PHP", "HTML"};

        JComboBox jcb1 = new JComboBox(language);
        panel.add(jcb1);
        frame.add(panel);

        frame.setVisible(true);

        jcb1.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                if(jcb1.getSelectedItem().equals("Java")) {
                    result = "Du hast Java ausgewaehlt.";
                } else if(jcb1.getSelectedItem().equals("JavaScript")) {
                    result = "Du hast JavaScript ausgewaehlt.";
                } else if(jcb1.getSelectedItem().equals("C++")) {
                    result = "Du hast C++ ausgewaehlt.";
                } else if(jcb1.getSelectedItem().equals("PHP")) {
                    result = "Du hast PHP ausgewaehlt.";
                } else if(jcb1.getSelectedItem().equals("HTML")) {
                    result = "Du hast HTML ausgewaehlt.";
                } else {
                    System.exit(1);
                }

            }
        });

        return result;

    }
}

Hier weiß ich jetzt nicht, wie ich "result" erst zurückgeben kann, nachdem ich sich die Variable geändert hat, denn ich muss ja return ja da schreiben, nicht irgendwo anders.
Wie mache ich das?

MfG
Kenta1561
 
M

mickedplay

Gast
Danke für die Antwort, was soll ich aber machen, wenn ich das über zwei Klassen machen will?:

Main-Klasse:
Java:
package main;

public class Main {

    public static void main(String[] args) {

        GUI gui = new GUI();
        String receivedResult = gui.connect();

        System.out.println(receivedResult);

    }

}

Zweite Klasse:
Java:
package main;

import javax.swing.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

/**
* Created by Kenta1561 on 2016/05/13.
*/
public class GUI {

    String result;

    public String connect() {

        JFrame frame = new JFrame("Title");
        frame.setSize(500,300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();

        String[] language = {"Java", "JavaScript", "C++", "PHP", "HTML"};

        JComboBox jcb1 = new JComboBox(language);
        panel.add(jcb1);
        frame.add(panel);

        frame.setVisible(true);

        jcb1.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                if(jcb1.getSelectedItem().equals("Java")) {
                    result = "Du hast Java ausgewaehlt.";
                } else if(jcb1.getSelectedItem().equals("JavaScript")) {
                    result = "Du hast JavaScript ausgewaehlt.";
                } else if(jcb1.getSelectedItem().equals("C++")) {
                    result = "Du hast C++ ausgewaehlt.";
                } else if(jcb1.getSelectedItem().equals("PHP")) {
                    result = "Du hast PHP ausgewaehlt.";
                } else if(jcb1.getSelectedItem().equals("HTML")) {
                    result = "Du hast HTML ausgewaehlt.";
                } else {
                    System.exit(1);
                }

            }
        });

        return result;

    }
}

Hier weiß ich jetzt nicht, wie ich "result" erst zurückgeben kann, nachdem ich sich die Variable geändert hat, denn ich muss ja return ja da schreiben, nicht irgendwo anders.
Wie mache ich das?

MfG
Kenta1561
Callback. Keine Ahnung, mach sowas sehr selten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O IF-Statement wird nicht ausgeführt Java Basics - Anfänger-Themen 7
N Compiler-Fehler Not a statement Error Java Basics - Anfänger-Themen 7
J Rekursive Funktion und return statement Java Basics - Anfänger-Themen 3
A switch statement Java Basics - Anfänger-Themen 4
javapingu Variablenwerte ändern ohne return Statement? Java Basics - Anfänger-Themen 7
A Compiler Fehler - not a statement Java Basics - Anfänger-Themen 2
C java.sql Statement kann nicht geschlossen werden Java Basics - Anfänger-Themen 9
freudianslip if-Statement mit mehreren Zahlenwerten Java Basics - Anfänger-Themen 4
B Methoden if-statement error, FX, Fehlermeldung Java Basics - Anfänger-Themen 6
J Missing Return Statement Java Basics - Anfänger-Themen 11
J if or statement? Java Basics - Anfänger-Themen 2
P if - Statement erkennt variable nicht. Java Basics - Anfänger-Themen 12
T Not a Statement/Illegal Start of expression bei for Anweisung Java Basics - Anfänger-Themen 6
L Variable in If-Statement initialisieren Java Basics - Anfänger-Themen 4
B Problem bei switch statement Java Basics - Anfänger-Themen 4
M Return statement Java Basics - Anfänger-Themen 4
C Warum funktioniert mein If Statement nicht richtig? Java Basics - Anfänger-Themen 18
H Compiler-Fehler error not a statement Java Basics - Anfänger-Themen 2
W Return statement in Methode nur bei if-clause Java Basics - Anfänger-Themen 3
C Return statement Java Basics - Anfänger-Themen 10
T Boolean Missing return Statement?! Java Basics - Anfänger-Themen 2
B Not a statement error Java Basics - Anfänger-Themen 2
P fibonacci - do while Statement Logik Fehler Java Basics - Anfänger-Themen 5
T Problem im If-Else-Statement Java Basics - Anfänger-Themen 4
SexyPenny90 Why "Empty Statement"?!? Java Basics - Anfänger-Themen 2
P Compiler-Fehler Boolean: Missing Return Statement Java Basics - Anfänger-Themen 4
M SQL Statement Problem Java Basics - Anfänger-Themen 22
I Methoden Missing return statement; Intervallschachtellung Java Basics - Anfänger-Themen 12
I Problem mit H2-DB Insert-Statement Java Basics - Anfänger-Themen 3
A Assert statement Java Basics - Anfänger-Themen 3
M missing return statement?! Java Basics - Anfänger-Themen 4
J Prepared Statement Out of BondsException Java Basics - Anfänger-Themen 4
P Compiler-Fehler unreachable statement Java Basics - Anfänger-Themen 4
A Missing return-Statement Java Basics - Anfänger-Themen 9
T missing return statement Java Basics - Anfänger-Themen 36
P OOP unreachable statement - Fehler? Java Basics - Anfänger-Themen 3
E missing return statement Java Basics - Anfänger-Themen 6
H not a statement meldungen Java Basics - Anfänger-Themen 12
B Error:not a statement FEHLER bei * Java Basics - Anfänger-Themen 3
F import Statement für Klassen die dem default Package zugeordnet sind? Java Basics - Anfänger-Themen 2
B Not a Statement Problem Java Basics - Anfänger-Themen 8
S Not a Statement? Java Basics - Anfänger-Themen 10
C missing return statement Java Basics - Anfänger-Themen 5
K SQL Statement formatieren + Swingzeug auslagern Java Basics - Anfänger-Themen 18
dognose missing Return Statement Java Basics - Anfänger-Themen 4
H Funktion erkennt das return-statement nicht Java Basics - Anfänger-Themen 12
G [Hibernate] Aus SQL-Statement Entities erzeugen Java Basics - Anfänger-Themen 2
M Callable Statement mit Variablen Java Basics - Anfänger-Themen 8
A SQL Create Table Statement Java Basics - Anfänger-Themen 19
T if-then statement soll nur Zahlen zulassen Java Basics - Anfänger-Themen 12
G Missing return Statement Java Basics - Anfänger-Themen 2
S prepared statement delete Java Basics - Anfänger-Themen 5
J Statement an MySQL Datenbank schicken Java Basics - Anfänger-Themen 4
L INSERT Statement geht nicht HILFE! Java Basics - Anfänger-Themen 2
I call to super must be first statement in constructor Java Basics - Anfänger-Themen 3
L IF Bedingung in SELECT Statement? Java Basics - Anfänger-Themen 3
R "missing return statement"? Java Basics - Anfänger-Themen 2
S prepared statement Java Basics - Anfänger-Themen 10
G SQL Statement Java Basics - Anfänger-Themen 4
J Variable Werte in einem SQL Statement? Java Basics - Anfänger-Themen 8
G Inhalt Textfield in SQL Statement klappt nicht. Java Basics - Anfänger-Themen 2
F Missung Return Statement Java Basics - Anfänger-Themen 10
G Button und SQL-Statement ausführen Java Basics - Anfänger-Themen 6
H Variable zuweisung in einem If-Statement Java Basics - Anfänger-Themen 3
J return- Statement Java Basics - Anfänger-Themen 3
G missing return statement Java Basics - Anfänger-Themen 5
S Problem mit if-Statement Java Basics - Anfänger-Themen 5
G Array und switch-Statement Java Basics - Anfänger-Themen 4
R kurzes if-then-else statement Java Basics - Anfänger-Themen 8
M missing return statement Java Basics - Anfänger-Themen 4
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
I Exception wird gefangen, aber trotzdem in Error Log? Java Basics - Anfänger-Themen 10
H JDK installieren jdk-21 wird nicht erkannt Java Basics - Anfänger-Themen 13
T if-else Bedingung wird ignoriert Java Basics - Anfänger-Themen 4
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
P Webseite vom Smartmeter wird nur unleserlich angezeigt Java Basics - Anfänger-Themen 7
A Warum wird mein jdk nicht gefunden? Java Basics - Anfänger-Themen 3
J jar Befehl wird nicht erkannt Java Basics - Anfänger-Themen 7
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
T catch(InputMismatchException) wird nicht ausgefürt/erkannt Java Basics - Anfänger-Themen 12
berserkerdq2 Intelij, wie kann ich einstellen, dass die aktuelle Klasse ausgeführt wird, wenn ich aufs Startsymbol drücke, gibts da eine Tastenkombination? Java Basics - Anfänger-Themen 11
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
Ostkreuz Wieso wird die Methode nochmal aufgerufen? Java Basics - Anfänger-Themen 5
Oneixee5 Maven Plugin wird 2 mal ausgeführt Java Basics - Anfänger-Themen 10
R Compiler-Fehler Variable wird nicht gefunden bzw. erkannt? Java Basics - Anfänger-Themen 2
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
C Was tun wenn .class erwartet wird ? Java Basics - Anfänger-Themen 6
T Meine Klasse wird nicht gefunden Java Basics - Anfänger-Themen 1
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
K Warum wird mir hier nach dem ersten Durchlauf zwei mal "welchen Datentyp wollen sie übergeben?" ausgegeben ? Java Basics - Anfänger-Themen 1
MiMa Ungültiges Datum wird nicht erkannt ?? Java Basics - Anfänger-Themen 6
schemil053 Multithread - Input verrutscht während etwas ausgegeben wird Java Basics - Anfänger-Themen 6
K REGEX - Rechnungsbetrag wird nicht richtig ausgelesen. Java Basics - Anfänger-Themen 3
_user_q Timer - ScheduledExecutorService wird schon vorher beendet Java Basics - Anfänger-Themen 5
X Erste Schritte Scanner eingabe wird übersprungen Java Basics - Anfänger-Themen 4
H Compiler-Fehler Klasse in einem Package wird nicht gefunden bzw. akzeptiert Java Basics - Anfänger-Themen 12
L Switch-Case Multiplikation wird nicht ausgegeben Java Basics - Anfänger-Themen 1
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben