绑定元素时如何从netbeans创建的另一个类访问私有列表

回顾

我曾尝试在另一个类中创建公共静态列表,并将其设置为与私有列表相等,但是我得到了一个巨大的staptrace,它告诉我无法清除列表,也无法设置列表。请帮忙

public void setLists() {

    General.programmeStatsListT.clear();
    General.programmeStatsListT.addAll(this.programmeStatsList);
    General.fightersListT.clear();
    General.fightersListT.addAll(this.fightersList);
    General.userTableListT.clear();
    General.userTableListT.addAll(this.userTableList);
    General.userStatsListT.clear();
    General.userStatsListT.addAll(this.userStatsList);

}

这是staptrace:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Database.Database_Frame.setLists(Database_Frame.java:379)
at Database.Database_Frame.<init>(Database_Frame.java:41)
at GUI.G_Start_Frame.<init>(G_Start_Frame.java:14)
at GUI.G_Start_Frame$4.run(G_Start_Frame.java:204)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

在我用此类扩展javax.swing.JFrame,然后让我的其他类扩展此类

public class General extends javax.swing.JFrame {


////////////////////////////DATABASE CODE////////////////////////////////
public static EntityManager DBWORKS;
Database_Frame database;


//List used as imterdetiaries between private table lists and the rest of the programme
public static List<Database.Fighters> fightersListT;
public static List<Database.ProgrammeStats> programmeStatsListT;
public static List<Database.UserStats> userStatsListT;
public static List<Database.UserTable> userTableListT;

//Iterators for intermediatory lists
public static ListIterator<Database.Fighters> fightersT_Iterator;
public static ListIterator<Database.ProgrammeStats> programmeST_Iterator;
public static ListIterator<Database.UserStats> userST_Iterator;
public static ListIterator<Database.UserTable> userTT_Iterator;


///////////////////MAPS, ARRAYS, DATABASE INTERATION//////////////////////
protected Map<String, User> userT_TreeMap = new TreeMap<>();
protected ArrayList<String> userT_TreeTemp = new ArrayList<>();

protected boolean validateNewUser(Boolean valid, Boolean format, String username, String password, String name, String surname, String rights, String pic_Dir) {

    if (name.isEmpty()) {
        JOptionPane.showMessageDialog(null, "Please enter your name", "Missing Field", JOptionPane.ERROR_MESSAGE);
    } else if (password.isEmpty()) {
        JOptionPane.showMessageDialog(null, "Please enter your password", "Missing Field", JOptionPane.ERROR_MESSAGE);
    } else if (surname.isEmpty()) {
        JOptionPane.showMessageDialog(null, "Please enter your surname", "Missing Field", JOptionPane.ERROR_MESSAGE);
    } else if (password.trim().length() < 8 || password.trim().length() > 30) {
        JOptionPane.showMessageDialog(null, "Password must be between 8 and 30 characters long", "Input Error", JOptionPane.ERROR_MESSAGE);
        G_Register_Frame.pwf_Password.setText(null);
        A_Add_User.pwf_Password.setText(null);

    } else if (name.trim().length() > 50) {
        JOptionPane.showMessageDialog(null, "Name can only be 50 characters long", "Input Error", JOptionPane.ERROR_MESSAGE);
        G_Register_Frame.txtf_Name.setText(null);
    } else if (surname.trim().length() > 50) {

        JOptionPane.showMessageDialog(null, "Surname can only be 50 characters long", "Input Error", JOptionPane.ERROR_MESSAGE);
        G_Register_Frame.txtf_Surname.setText(null);
        A_Add_User.txtf_Surname.setText(null);

    } else {

        for (int i = 0; i < name.length(); i++) {
            if (!Character.isLetter(name.charAt(i))) {
                format = false;
                if (format == false) {

                    JOptionPane.showMessageDialog(null, "Name can only consist of letters", "Input Error", JOptionPane.ERROR_MESSAGE);
                    G_Register_Frame.txtf_Name.setText(null);
                    A_Add_User.txtf_Name.setText(null);

                    break;

                }
            }
        }

        for (int i = 0; i < surname.length(); i++) {
            if (!Character.isLetter(surname.charAt(i))) {
                format = false;

                JOptionPane.showMessageDialog(null, "Surname can only consist of letters", "Input Error", JOptionPane.ERROR_MESSAGE);
                G_Register_Frame.txtf_Surname.setText(null);
                A_Add_User.txtf_Surname.setText(null);
                break;
            }
        }

        if (format == true) {
            valid = true;
        }
    }

    return valid;
}

protected void addUser(String username, String password, String name, String surname, String rights, String pic_Dir) {

    userT_TreeMap.put(username, new User(username, password, name, surname, rights, pic_Dir));

}

protected void writeDB_UserTBL() {

    for (String temp : userT_TreeTemp) {

        try {
            DBWORKS.find(UserTable.class, temp);
            DBWORKS.getTransaction().begin();
            DBWORKS.remove(temp);
            DBWORKS.getTransaction().commit();
            DBWORKS.clear();

        } catch (Exception e) {

            JOptionPane.showMessageDialog(null, "Database update failed.\nPlease report this error to the administrator", "ERROR " + e, JOptionPane.ERROR_MESSAGE);

        }

    }

    for (Map.Entry<String, User> entry : userT_TreeMap.entrySet()) {

        UserTable user = new UserTable();
        user.setId(entry.getKey());
        user.setFirstName(entry.getValue().getName());
        user.setSurname(entry.getValue().getSurname());
        user.setPassword(entry.getValue().getPassword());
        user.setRights(entry.getValue().getRights());
        user.setPicDir(entry.getValue().getPic_Dir());

        DBWORKS.getTransaction().begin();
        DBWORKS.persist(user);
        DBWORKS.getTransaction().commit();

    }

    database.clearLists();
    database.addAll();
    //database.setLists();
    database.getLists(programmeStatsListT, fightersListT, userStatsListT, userTableListT);

    userTT_Iterator = userTableListT.listIterator(0);
    database.setUserT(database.userT);

    userT_TreeMap.clear();

    database.addAll();

    database.clearLists();
    database.addAll();

    fillUserT_TreeMap();

}

protected void fillUserT_TreeMap() {

    for (UserTable temp : userTableListT) {

        userT_TreeMap.put(temp.getId(), new User(temp.getId(), temp.getPassword(), temp.getFirstName(), temp.getSurname(), temp.getRights(), temp.getPicDir()));

    }

    userT_TreeTemp.clear();

    for (Map.Entry<String, User> entry : userT_TreeMap.entrySet()) {

        userT_TreeTemp.add(entry.getKey());

    }

}

///////////////////////GENERAL METHODS////////////////////////////////////
protected void safeEnd(boolean end) {
    System.exit(0);
}

protected void backToMain() {
    new G_Main_Menu_Frame().setVisible(true);
    this.setVisible(false);
}

protected void backToAdmin_Menu() {
    new A_Admin_Menu_Frame().setVisible(true);
    this.setVisible(false);
}

protected void backToUser_Menu() {
    new U_User_Menu().setVisible(true);
    this.setVisible(false);
}

protected void backToPredict() {

    new U_Predict_Frame().setVisible(true);
    this.setVisible(false);

}

protected void backToDef_Res() {
    new A_Define_Frame().setVisible(true);
    this.setVisible(false);
}

protected void goToDef_Frame() {
    new A_Def_Res().setVisible(true);
    this.setVisible(false);
}

protected void backToUser_Man() {
    new A_User_Frame().setVisible(true);
    this.setVisible(false);
}

protected void backToA_Stats() {
    new A_Statistics_Frame().setVisible(true);
    this.setVisible(false);
}

protected void printList() {

    for(int i = 0; 0 < userTableListT.size(); i++) {

    System.out.println("" + userStatsListT.get(i));

    }

}

protected void setIterators() {

    fightersT_Iterator = fightersListT.listIterator(0);
    programmeST_Iterator = programmeStatsListT.listIterator(0);
    userST_Iterator = userStatsListT.listIterator(0);
    userTT_Iterator = userTableListT.listIterator(0);

}

}

请注意,我尚未在程序中使用的某些代码尚未完成

我的数据库类

public final class Database_Frame extends javax.swing.JFrame{

public Fighters fighters;
public ProgrammeStats programme;
public UserStats userS;
public UserTable userT;

public ListIterator<Database.Fighters> fightersListIterator;
public ListIterator<Database.ProgrammeStats> programmeListIterator;
public ListIterator<Database.UserStats> userStatsListIterator;
public ListIterator<Database.UserTable> userTableListIterator;



public Database_Frame() {
    initComponents();

    setEntityMan(General.DBWORKS);
    setUserS(userS);
    setUserT(userT);
    setProgramme(programme);
    setFighters(fighters);

    fightersListIterator = fightersList.listIterator(0);
    programmeListIterator = programmeStatsList.listIterator(0);
    userTableListIterator = userTableList.listIterator(0);
    userStatsListIterator = userStatsList.listIterator(0);

    setLists();

    //setLists(programmeStatsListT, fightersListT, userStatsListT, userTableListT);


public Fighters getFighters() {
    return fighters;
}

public void setFighters(Fighters fighters) {
    Fighters oldFighters = this.fighters;
    this.fighters = fighters;
    firePropertyChange("fighters", oldFighters, fighters);
}

public ProgrammeStats getProgramme() {
    return programme;
}

public void setProgramme(ProgrammeStats programme) {
    ProgrammeStats oldProgramme = this.programme;
    this.programme = programme;
    firePropertyChange("programme", oldProgramme, programme);
}

public UserStats getUserS() {
    return userS;
}

public void setUserS(UserStats userS) {
    UserStats oldUserStats = this.userS;
    this.userS = userS;
    firePropertyChange("userS", oldUserStats, userS);
}

public UserTable getUserT() {
    return userT;
}

public void setUserT(UserTable userT) {
    UserTable oldUserTable = this.userT;
    this.userT = userT;
    firePropertyChange("userT", oldUserTable, userT);
}

public void setLists() {

    General.programmeStatsListT.clear();
    General.programmeStatsListT.addAll(this.programmeStatsList);
    General.fightersListT.clear();
    General.fightersListT.addAll(this.fightersList);
    General.userTableListT.clear();
    General.userTableListT.addAll(this.userTableList);
    General.userStatsListT.clear();
    General.userStatsListT.addAll(this.userStatsList);

}

public void getLists(List programmeStatsList, List fightersList, List userStatsList, List userTableList) {

    this.programmeStatsList = programmeStatsList;
    this.fightersList = fightersList;
    this.userStatsList = userStatsList;
    this.userTableList = userTableList;

}

public void clearLists() {

    programmeStatsList.clear();
    fightersList.clear();
    userStatsList.clear();
    userTableList.clear();

}

public void addAll() {

    programmeStatsList.addAll(programmeStatsQuery.getResultList());
    fightersList.addAll(fightersQuery.getResultList());
    userStatsList.addAll(userStatsQuery.getResultList());
    userTableList.addAll(userTableQuery.getResultList());

}

public void setEntityMan(EntityManager eMan) {

    eMan = FairyTail_DBPUEntityManager;

}

拿出无用的自动生成代码

安德烈·尼库桑(Andrei Nicusan)

您的staticList肯定没有初始化。只要在您的General班级中可以看到,这些Lists唯一的被初始化的机会就在内部database.getLists,除非直接从另一个班级进行初始化,因为它们是公共成员。

请检查代码中可以初始化列表的任何地方,并确保在调用之前执行了这些代码片段setLists

编辑

看来您的getLists方法未初始化静态列表。无论如何,您的方法名称有点误导,因为getLists实际上是在类实例中设置列表,而setLists实际上是试图将列表的内容复制到另一个类的静态成员中。

同样,我在您发布的代码中找不到列表的任何初始化,例如
programmeStatsListT = new ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从另一个类访问私有对象?

来自分类Dev

类方法如何访问相同类的另一个实例的私有成员?

来自分类Dev

如何从另一个类访问私有对象?

来自分类Dev

如何从另一个类访问列表的长度

来自分类Dev

如何访问在属于另一个类的静态对象中创建的列表?

来自分类Dev

如何在C#中访问另一个类中某个类的私有函数?

来自分类Dev

如何在另一个类的静态成员函数中访问私有静态变量?

来自分类Dev

通过公共外部类-从另一个类访问私有内部类

来自分类Dev

从Java中的另一个类访问私有变量

来自分类Dev

从私有void函数c#中的另一个类访问变量

来自分类Dev

无法从另一个类访问私有字段的属性

来自分类Dev

从私有方法中的另一个类访问对象

来自分类Dev

如何获取另一个类中一个类的所有已声明数据变量的列表,包括私有变量

来自分类Dev

我如何获得一个类成员函数以访问另一个类成员函数的私有成员?

来自分类Dev

如何从另一个ActionListener访问一个ActionListener中的数组列表的元素?

来自分类Dev

如何在C#中从另一个私有类调用私有类变量

来自分类Dev

如何从Xamarin Forms中的另一个ContentPage访问/继承私有字段属性?

来自分类Dev

Android:如何从活动访问以更新另一个活动的私有变量

来自分类Dev

如何使用 Kotlins 视图绑定访问另一个类中的视图

来自分类Dev

如何通过创建另一个类的对象的类访问方法?

来自分类Dev

如何从另一个列表中访问类中的列表

来自分类Dev

访问在另一个类中创建的对象

来自分类Dev

如何删除元素列表中的类并添加到另一个元素Jquery?

来自分类Dev

当实例来自另一个类时,如何访问超类的实例?

来自分类Dev

当另一个类仅知道超类时,如何获得对子类的访问?

来自分类Dev

从另一个类访问方法时出错

来自分类Dev

当类只有一个私有构造函数时,如何创建代理?

来自分类Dev

当我在同一个对象中有另一个元素的值时,如何访问 JSON 元素?

来自分类Dev

如何使用链接列表插入功能访问另一个类?

Related 相关文章

  1. 1

    如何从另一个类访问私有对象?

  2. 2

    类方法如何访问相同类的另一个实例的私有成员?

  3. 3

    如何从另一个类访问私有对象?

  4. 4

    如何从另一个类访问列表的长度

  5. 5

    如何访问在属于另一个类的静态对象中创建的列表?

  6. 6

    如何在C#中访问另一个类中某个类的私有函数?

  7. 7

    如何在另一个类的静态成员函数中访问私有静态变量?

  8. 8

    通过公共外部类-从另一个类访问私有内部类

  9. 9

    从Java中的另一个类访问私有变量

  10. 10

    从私有void函数c#中的另一个类访问变量

  11. 11

    无法从另一个类访问私有字段的属性

  12. 12

    从私有方法中的另一个类访问对象

  13. 13

    如何获取另一个类中一个类的所有已声明数据变量的列表,包括私有变量

  14. 14

    我如何获得一个类成员函数以访问另一个类成员函数的私有成员?

  15. 15

    如何从另一个ActionListener访问一个ActionListener中的数组列表的元素?

  16. 16

    如何在C#中从另一个私有类调用私有类变量

  17. 17

    如何从Xamarin Forms中的另一个ContentPage访问/继承私有字段属性?

  18. 18

    Android:如何从活动访问以更新另一个活动的私有变量

  19. 19

    如何使用 Kotlins 视图绑定访问另一个类中的视图

  20. 20

    如何通过创建另一个类的对象的类访问方法?

  21. 21

    如何从另一个列表中访问类中的列表

  22. 22

    访问在另一个类中创建的对象

  23. 23

    如何删除元素列表中的类并添加到另一个元素Jquery?

  24. 24

    当实例来自另一个类时,如何访问超类的实例?

  25. 25

    当另一个类仅知道超类时,如何获得对子类的访问?

  26. 26

    从另一个类访问方法时出错

  27. 27

    当类只有一个私有构造函数时,如何创建代理?

  28. 28

    当我在同一个对象中有另一个元素的值时,如何访问 JSON 元素?

  29. 29

    如何使用链接列表插入功能访问另一个类?

热门标签

归档