有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在GridBagLayout中调用SetContraints时发生java NullPointerException

在正在创建的JDialog中,我试图将字段添加到GUI中,但它返回了一个NullPointerException,如下示例:

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


public class Login extends JDialog{

    //Constants
    private final int WIDTH  = 240;
    private final int HEIGHT = 180;

    //Attributes
    private JPasswordField passwordField;
    private JButton login;
    private JLabel instruction;
    private GridBagLayout aLayout;
    GridBagConstraints aConstraint;

    public Login(){
        setTitle("Login Dialog");
        setSize(WIDTH, HEIGHT);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        aConstraint = new GridBagConstraints();
        int padding = 5;

        instruction = new JLabel("Enter password: ");

        passwordField = new JPasswordField();
        passwordField.setPreferredSize(new Dimension(100, 20));
        passwordField.setMinimumSize(new Dimension(100, 20));

        login = new JButton("Login");

        //Adding widgets to the GUI
        addWidget(instruction, 1, 1, 1, 1);
        addWidget(passwordField, 1, 1, 1, 1);
        addWidget(login, 1, 2, 1, 1);


        //Setting padding
        aConstraint.insets = new Insets(padding, padding, padding, padding);
        //Creating layout
        aLayout = new GridBagLayout();
        setLayout(aLayout);

        //Making sure visibility is true.
        setVisible(true);
    }
    public void addWidget(Component widget, int x, int y, int w, int h)
    {
        aConstraint.gridx = x;
        aConstraint.gridy = y;
        aConstraint.gridwidth = w;
        aConstraint.gridheight = h;
        aLayout.setConstraints(widget, aConstraint);
        add(widget); // Calling method of super class.
    }
}

这就是我得到的错误:

Exception in thread "main" java.lang.NullPointerException
    at Login.addWidget(Login.java:57)
    at Login.<init>(Login.java:37)

我使用JFrame创建了一个类似的类,但我没有遇到这个问题


共 (0) 个答案