不知道为什么我为我的gui应用程序获得nullpointerexception

 手机用户2502891227 发布于 2023-02-11 13:32

当我在actionListener中的任何文本字段上调用getText()时,它会不断抛出nullpointer错误.我已经这样做了十几次,我必须要有一个大脑放屁.

  import java.awt.BorderLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.concurrent.ExecutionException;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTabbedPane;
    import javax.swing.JTextField;
    import javax.swing.SwingUtilities;
    import javax.swing.SwingWorker;

public class Addressbook {
    private JTextField firstName;
    private JTextField lastName;
    private JTextField number;
    private JTextField address;
    private JTextField zipcode;
    private ConnectDB db;

    public void buildGui() {
        JFrame frame = new JFrame("hakob AddressBook");
        JTabbedPane tabs = new JTabbedPane();
        JPanel mainPanel = new JPanel();
        mainPanel.add(tabs);

        JPanel addContact = new JPanel(new GridLayout(3, 2));
        JTextField firstName = new JTextField("first name", 9);
        lastName = new JTextField("last name", 10);
        number = new JTextField("number", 9);
        address = new JTextField("address", 15);
        zipcode = new JTextField("zipcode", 5);
        JButton addButton = new JButton("add contact");
        addButton.addActionListener(new addListener());
        addContact.add(firstName);
        addContact.add(lastName);
        addContact.add(number);
        addContact.add(address);
        addContact.add(zipcode);
        addContact.add(addButton);

        JPanel editContact = new JPanel();
        // select contact
        // make changes
        // submit changes

        JPanel viewContacts = new JPanel();
        // table show contacts
        // sort contacts
        // edit?
        tabs.addTab("add new contact", addContact);
        tabs.addTab("edit contact", editContact);
        tabs.addTab("view contacts", viewContacts);
        frame.add(mainPanel, BorderLayout.CENTER);
        frame.setSize(450, 630);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // frame.pack();

    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new Addressbook().buildGui();
            }
        });
    }

    public class addListener implements ActionListener {
        public void actionPerformed(ActionEvent ev) {
            new SwingWorker() {
                @Override
                protected Person doInBackground() throws Exception {
                    System.out.println("adding");
                    Person person = new Person(firstName.getText(),
                            lastName.getText(), (Integer.parseInt(number
                                    .getText())), address.getText(),
                            (Integer.parseInt(zipcode.getText())));
                    System.out.println(person);
                    clearText();
                    return person;
                }

                @Override
                protected void done() {
                    try {
                        db.add(get());
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                        System.out.println("interupt");
                    } catch (ExecutionException e) {
                        e.printStackTrace();
                        System.out.println("execution exc");
                    }
                    System.out.println("done");
                }
            }.execute();
        }
    }

    public void clearText() {
        firstName.setText("");
        lastName.setText("");
        number.setText("");
        address.setText("");
        zipcode.setText("");
    }
}

错误:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at Addressbook.clearText(Addressbook.java:105)
    at Addressbook$addListener$1.done(Addressbook.java:98)
    at javax.swing.SwingWorker$5.run(Unknown Source)
    at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(Unknown Source)
    at sun.swing.AccumulativeRunnable.run(Unknown Source)
    at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(Unknown Source)
    at javax.swing.Timer.fireActionPerformed(Unknown Source)
    at javax.swing.Timer$DoPostEvent.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$200(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

当我尝试显式创建一个人物对象时它工作正常,但如果我从文本字段中获取文本则不行

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有