Диалоговое окно с исключением в потоке "AWT-EventQueue-0" java.lang.NullPointerException

Я пытаюсь сделать простой диалог с паролем, но мой код дает мне это NullPointerExeption, и я не могу понять, в чем проблема. он запускает JFrame как обычно с помощью кнопки и textField, но в тот момент, когда вы нажимаете кнопку, он выбрасывает nullpointexeption в оболочке, и я не очень хорошо разбираюсь в них, поэтому я сначала разобрал весь код MijnDialoog.java так что это только создаст нормальный JFrame, но даже это даст мне ошибки. это сообщение об ошибке

hoi
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at java.desktop/java.awt.Container.addImpl(Container.java:1113)
    at java.desktop/java.awt.Container.add(Container.java:1025)
    at java.desktop/javax.swing.JDialog.addImpl(JDialog.java:915)
    at java.desktop/java.awt.Container.add(Container.java:432)
    at MijnDialoog.<init>(MijnDialoog.java:24)
    at HoofdScherm.actionPerformed(HoofdScherm.java:23)
    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:269)
    at java.desktop/java.awt.Component.processMouseEvent(Component.java:6578)
    at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3343)
    at java.desktop/java.awt.Component.processEvent(Component.java:6343)
    at java.desktop/java.awt.Container.processEvent(Container.java:2259)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4961)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2317)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4793)
    at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
    at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4539)
    at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4480)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2303)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2758)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4793)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:766)
    at java.desktop/java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:717)
    at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:711)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:89)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:99)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:739)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:737)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:89)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:736)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:199)
    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)

это мой код: HoofdScherm.java

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

public class HoofdScherm extends JFrame implements ActionListener{
    private JTextField veld;
    public HoofdScherm(){
        setSize(300,200);
        setLayout(new GridLayout(2,1));
        JButton knop = new JButton("knopje");
        veld = new JTextField();
        knop.addActionListener(this);
        this.add(knop);

        this.add(veld);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }


    public void actionPerformed(ActionEvent e){ 
        System.out.println("hoi"); 
        MijnDialoog dialoog = new MijnDialoog(this); 
        if(dialoog.getIsOk()) {
            String naam = dialoog.getNaam();
            String pw = dialoog.getPw();
            veld.setText(naam+"\n"+pw);
        }
    }  
}

MijnDialoog.java

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class MijnDialoog extends JDialog implements ActionListener{
        private boolean isOk;
        private JLabel jlNaam;
        private JTextField jtfNaam;
        private JLabel jlPw;
        private JTextField jtfPw;
        private JButton jbOk;
        private JButton jbCancel;
        public MijnDialoog(JFrame frame){
            super(frame, true);
            setSize(500,400);
            setLayout(new GridLayout(3,2));
            jlNaam = new JLabel("Naam");
            jlPw = new JLabel("Password");
            jtfNaam = new JTextField();
            jtfPw = new JTextField();
            this.add(jlNaam);
            this.add(jtfNaam);
            this.add(jlPw);
            this.add(jtfPw);
            this.add(jbOk);
            this.add(jbCancel);
            jbOk.addActionListener(this);
            jbCancel.addActionListener(this);
            setVisible(true);
        }
        public void actionPerformed(ActionEvent e){
            if (e.getSource() == jbOk) {
                isOk = true;
            } else {
                isOk = false;
            }
            setVisible(false);
        }
        public String getNaam() {
            return jtfNaam.getText();
        }
        public String getPw(){
            return jtfPw.getText();
        }
        public boolean getIsOk() {
            return isOk;
        }
    }

0 ответов

Другие вопросы по тегам