Диалоговое окно с исключением в потоке "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;
}
}