Methoden if-statement error, FX, Fehlermeldung

Guten Tag, ich habe ein Problem bei meinem ersten Programm: ein LogIn GUI mit ein paar simplen Funktionen - siehe https://www.java-forum.org/thema/methoden-haben-kein-zugriff-auf-variablen.189333/#post-1231244
Das Problem in dem Post habe ich durch die Hilfe lösen können - nun kommt das nächste.

Ich probiere etwas mit einem RadioButton --> Wenn ich auf den LogIn - Button drücke soll überprüft werden, ob ich die "AGB's" akzeptiert habe oder nicht: Ist der RadioButton ausgewählt, ja oder nein ?

Java:
public void LoginButton() {
        pWordEingabe = passwordField.getText();        // Passwort und Benutzername in dem String speichern
        uNameEingabe = textField.getText();       
        System.[B][I]out[/I][/B].println("Login gedrückt!");
        System.[B][I]out[/I][/B].println("----------------");
        System.[B][I]out[/I][/B].println("Benutzername eingegeben: " + uNameEingabe);    // Daten ausgeben - für die Überprüfung
        System.[B][I]out[/I][/B].println("Passwort eingegeben: " + pWordEingabe);
        Policy();                                                // In der Policy Methode wird einfach nur ein System.out.println(...), wenn es angeklickt ist oder nicht
        System.[B][I]out[/I][/B].println("________________");   

            if (PolicyAccepted.isSelected() == true) {
            PolicyYes = true;
        } else {
            PolicyYes = false;
        }
}
So und immer, wenn ich ausführe klappt alles, bis ich den RadioButton drücke --> eine Fehlermeldung
--> alle anderen Funktionen gehen bis dahin


Meine Fragen:
a) Wie löse ich das beschriebene Problem ?
b) Wie kommt man auf die Lösung, ohne ein Post schreiben zu müssen, bei Fehlermeldungen solcher Art?

Die Fehlermeldung:
Code:
[SIZE=2]java.lang.NullPointerException
    at loginGUi.LoginButton(loginGUi.java:111)
    at loginGUi.lambda$0(loginGUi.java:64)
    at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
    at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
    at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
    at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
    at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
    at java.desktop/java.awt.Component.processMouseEvent(Component.java:6635)
    at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
    at java.desktop/java.awt.Component.processEvent(Component.java:6400)
    at java.desktop/java.awt.Container.processEvent(Container.java:2263)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5011)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4843)
    at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
    at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
    at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2772)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4843)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
[/SIZE]
 

httpdigest

Top Contributor
Es hilft einfach, Exceptions bzw. deren Stacktraces lesen zu können.
Code:
java.lang.NullPointerException
    at loginGUi.LoginButton(loginGUi.java:111)   <---- also Klasse "loginGUi", Methode "LoginButton" in Datei "loginGUI.java" in Zeile 111
    ...
Hier wird dir ganz genau gesagt, in welcher Zeile auf eine null-Variable zugegriffen wurde. Und wenn du ab Java 14 verwendest, dann steht in der NullPointerException Message sogar die (Sub)-expression, die zu null ausgewertet wurde.
 
K

kneitzel

Gast
Könntest Du die ganze Klasse zeigen?

Du kannst aber auch Zeile 111 der loginGUi Klasse prüfen - da greifst Du auf eine Variable zu, die null ist, vermutlich PolicyAccepted.

Generell evtl. auf die Java Benennung achten:
Groß-/Kleinschreibung:
Klassen starten mit einem Großbuchstaben und sind dann PascalCase: Statt loginGUi also LoginGui oder LoginGUI
Methoden sind camelCase: Statt LoginButton also loginButton
Variablen sind camelCase: Statt PolicyAccepted also policyAccepted

Dann sollten die Namen so gewählt sein, dass gut erkennbar ist, was passiert. Also bei Methoden hat man in der Regel ein Verb mit dabei. handleLoginButtonClick oder so wäre dann deutlich besser.
 
Könntest Du die ganze Klasse zeigen?

Du kannst aber auch Zeile 111 der loginGUi Klasse prüfen - da greifst Du auf eine Variable zu, die null ist, vermutlich PolicyAccepted.

Generell evtl. auf die Java Benennung achten:
Groß-/Kleinschreibung:
Klassen starten mit einem Großbuchstaben und sind dann PascalCase: Statt loginGUi also LoginGui oder LoginGUI
Methoden sind camelCase: Statt LoginButton also loginButton
Variablen sind camelCase: Statt PolicyAccepted also policyAccepted

Dann sollten die Namen so gewählt sein, dass gut erkennbar ist, was passiert. Also bei Methoden hat man in der Regel ein Verb mit dabei. handleLoginButtonClick oder so wäre dann deutlich besser.


Ich verstehe es irgendwie nicht ganz genau, PolicyAccepted habe ich eigentlich genau Definiert. Hier mal der ganze Code - nehme gerne Optimierungsvorschläge an :)

Java:
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JLabel;

public class loginGUi {

    private JFrame frame;
    private JTextField textField;
    private JPasswordField passwordField;
    private JRadioButton PolicyAccepted;
    
    private String uNameEingabe;
    private String pWordEingabe;
    private boolean eingabeKorrekt;
    private boolean PolicyYes;
    
    

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    loginGUi window = new loginGUi();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public loginGUi() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);
        
        JButton LoginButton = new JButton("Log In ");
        LoginButton.setBounds(291, 70, 117, 113);
        frame.getContentPane().add(LoginButton);
        LoginButton.addActionListener(e -> LoginButton());
        
        textField = new JTextField();
        textField.setBounds(123, 70, 130, 26);
        frame.getContentPane().add(textField);
        textField.setColumns(10);
        
        passwordField = new JPasswordField();
        passwordField.setBounds(123, 157, 130, 26);
        frame.getContentPane().add(passwordField);
        
        JRadioButton PolicyAccepted = new JRadioButton("Policy");
        PolicyAccepted.setBounds(291, 195, 141, 23);
        frame.getContentPane().add(PolicyAccepted);
        PolicyAccepted.setSelected(false);
        PolicyAccepted.addActionListener(e -> Policy());
        
        
        
        
        
        
        
        
        
        JLabel uNameLabel = new JLabel("Username:");
        uNameLabel.setBounds(6, 70, 105, 16);
        frame.getContentPane().add(uNameLabel);
        
        JLabel passwordLabel = new JLabel("Password:");
        passwordLabel.setBounds(6, 162, 105, 16);
        frame.getContentPane().add(passwordLabel);
        
        JLabel LabelLogin = new JLabel("Log In");
        LabelLogin.setBounds(192, 6, 61, 16);
        frame.getContentPane().add(LabelLogin);
    }

    public void LoginButton() {
        pWordEingabe = passwordField.getText();
        uNameEingabe = textField.getText();        
        
        System.out.println("Login gedrückt!");
        System.out.println("----------------");
        System.out.println("Benutzername eingegeben: " + uNameEingabe);
        System.out.println("Passwort eingegeben: " + pWordEingabe);
        Policy();
        if (PolicyAccepted.isSelected() == true) {
            PolicyYes = true;
        } else {
            PolicyYes = false;
        }
        
    }
    
    
    public void Policy() {
        if (PolicyYes == true) {
            System.out.println("AGB");
            
        } else {
            System.out.println("no");
        }
    } 
}
 

fhoffmann

Top Contributor
Du erzeugtst eine neue lokale Variable und setzt nicht das Member:
Java:
JRadioButton PolicyAccepted = new JRadioButton("Policy");
 

fhoffmann

Top Contributor
Du hast in der Klasse eine Variable (ein Member) deklariert:
Java:
JRadioButton PolicyAccepted;
In initialize() schreibst du dann:
Java:
JRadioButton PolicyAccepted = new JRadioButton("Policy");
Dadurch erstellst du eine neue lokale Variable mit dem gleichen Namen wie das Member.
Du solltest in initialize() schreiben:
Java:
PolicyAccepted = new JRadioButton("Policy");
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Compiler-Fehler Not a statement Error Java Basics - Anfänger-Themen 7
H Compiler-Fehler error not a statement Java Basics - Anfänger-Themen 2
B Not a statement error Java Basics - Anfänger-Themen 2
B Error:not a statement FEHLER bei * Java Basics - Anfänger-Themen 3
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
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
K Input/Output If-Statement wird übersprugen Java Basics - Anfänger-Themen 5
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
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
O IF-Statement wird nicht ausgeführt Java Basics - Anfänger-Themen 7
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
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
I Exception wird gefangen, aber trotzdem in Error Log? Java Basics - Anfänger-Themen 10
terashy VS Code Project run error Java Basics - Anfänger-Themen 10
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
monsterherz error: <identifier> expected Java Basics - Anfänger-Themen 2
R Compiler-Fehler identifier error? Java Basics - Anfänger-Themen 3
Jul1n4tor Scanner error bei Eingabe die kein Integer ist Java Basics - Anfänger-Themen 4
richrich99 error: illegal start of expression Java Basics - Anfänger-Themen 10
M error: '.class' expected switch(char) Java Basics - Anfänger-Themen 32
N Compiler-Fehler State Machine - Compiler Error Java Basics - Anfänger-Themen 48
U Interface als PAramter (Vergleich) und ein Error Java Basics - Anfänger-Themen 9
FHEFHJHFJH error: class names, 'summe_bsp', are only accepted if annotation processing is explicitly requested Java Basics - Anfänger-Themen 3
S JavaKara Null Exception Error Java Basics - Anfänger-Themen 4
P Eclipse Karate Framework API Test . Unexpected Error: the trustAnchors parameter must be non-empty Java Basics - Anfänger-Themen 1
H Versteht jemand diesen Codewars Error? Java Basics - Anfänger-Themen 8
J Fehlermeldung: A JNI error Java Basics - Anfänger-Themen 3
Gaudimagspam Compiler Error Java Basics - Anfänger-Themen 3
Eule25 Arbeit mit long und int, Error: integer number too large Java Basics - Anfänger-Themen 2
P Welche Zeile in Tadople gibt einen compiler error? Java Basics - Anfänger-Themen 5
K Error bei meinem Programm - Hilfe Java Basics - Anfänger-Themen 8
A Scanner-Error Java Basics - Anfänger-Themen 8
Elyt Error: incompatible types Java Basics - Anfänger-Themen 3
I Client ObjectInputStream error... Java Basics - Anfänger-Themen 5
Kirby.exe Alle möglichen Error Möglichkeiten abfangen Java Basics - Anfänger-Themen 33
C error: <identifier> expected Java Basics - Anfänger-Themen 13
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
N Methoden Unerklärliche Error Meldung Java Basics - Anfänger-Themen 3
ZH1896ZH Datentypen Error bei For-Schleife Java Basics - Anfänger-Themen 2
R Error, wenn mehrere Clients gleichzeitig die Verbindung beenden Java Basics - Anfänger-Themen 16
Z Klassen Error: ';' expected - was mache ich falsch? Java Basics - Anfänger-Themen 4
9 Error bei .split() Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben