简体   繁体   中英

java.lang.NullPointerException when populating Jtextfield using a bean class

Here is my class which is a gui consisting of two tabs, my profile and edit profile. I am having a problem at the 'myProfileTabStateChanged' method when the index value changes to 1. When tab index is 0, 'myProfile()' method executes successfully, but when index is 1, 'editProfile()' is giving too many errors. The purpose of editprofile() is simply to extract the values from a bean class and set it to the textfields appropriately. What am I doing wrong? Please note the bean class variables are being populated correctly using setter methods, but in this class I am unable to retrieve the values using the getters? Perhaps it is retrieving but problem lies in being unable to set it to textfield.

public class MainMenu extends javax.swing.JFrame {

    Academic ac = new Academic();
    academicBean bn = new academicBean();

    /**
     * Creates new form MainMenu
     */
    public MainMenu() {
        initComponents();
        // myProfile(); 
        // editProfile(); 
    }

    public void myProfile() {
        ac.retrieveAcademic();
        nameLabel.setText(""+ac.title+" "+ac.forename+" "+ac.surname);
        roleLabel.setText("Role:    " + ac.role);
        roomLabel.setText("Room:    " + ac.room);
        pageLabel.setText("Page:    " + ac.page);
        hoursLabel.setText("Hours:   " + ac.hours);
        phoneLabel.setText("Phone:   " + ac.phone);
        mobileLabel.setText("Mobile:  " + ac.mobile);
        emailLabel.setText("Email:   " + ac.email);
        imageLabel.setIcon(ac.format);
    }

    public void editProfile() {
        ac.retrieveAcademic();
        idLabel.setText("Academic Id:    "+bn.getAcademicId());
        txt_title.setSelectedItem(bn.getTitle().toString());
        txt_fn.setText(bn.getForename().toString());
        txt_ln.setText(bn.getSurname().toString());
        combo_role.setSelectedItem(bn.getRole().toString());
        txt_room.setText(bn.getRoom().toString());
        txt_page.setText(bn.getPage().toString());
        txt_hours.setText(bn.getHours().toString());
        txt_phone.setText(bn.getPhone().toString());
        txt_mobile.setText(bn.getMobile().toString());
        txt_email.setText(bn.getEmail().toString());
    }

    private void myProfileTabStateChanged(javax.swing.event.ChangeEvent evt) {
        JTabbedPane sourceTabbedPane = (JTabbedPane) evt.getSource();
        int index = sourceTabbedPane.getSelectedIndex();

            if (index == 0) {
            myProfile();
        }

        else if (index == 1) {
            editProfile(); 
        }
    }

//Class Academic

public class Academic extends javax.swing.JFrame {
   String filename = null;
   int s = 0;
   byte[] person_image = null;
   ImageIcon format = null;

   LoginBean l = new LoginBean();
   Connection con = javaconnect.ConnectDB();
   academicBean bean = new academicBean();

   PreparedStatement pst = null;
   ResultSet rs = null;

   int id;
   String title;
   String titleValue;
   String forename;
   String surname;
   String role;
   String roleValue;
   String room;
   String page;
   String hours;
   String phone;
   String mobile;
   String email;
   byte[] imagedata = null;

   public Academic() {
      initComponents();
   }

   @SuppressWarnings("unchecked")
   public void retrieveAcademic() {

      try {
         pst = con
               .prepareStatement("SELECT * FROM AcademicInfo where Email=? and Password=?");
         pst.setString(1, l.getUsername());
         pst.setString(2, l.getPassword());
         rs = pst.executeQuery();
         while (rs.next()) {
            id = (rs.getInt(1));
            bean.setAcademicId(id);
            title = (rs.getString(2));
            bean.setTitle(title);
            forename = (rs.getString(3));
            bean.setForename(forename);
            surname = (rs.getString(4));
            bean.setSurname(surname);
            role = (rs.getString(5));
            bean.setRole(role);
            room = (rs.getString(6));
            bean.setRoom(room);
            page = (rs.getString(7));
            bean.setPage(page);
            hours = (rs.getString(8));
            bean.setHours(hours);
            phone = (rs.getString(9));
            bean.setPhone(phone);
            mobile = (rs.getString(10));
            bean.setMobile(mobile);
            email = (rs.getString(11));
            bean.setEmail(email);
            imagedata = (rs.getBytes("Image"));
            format = new ImageIcon(imagedata);

         } // end while

      } catch (SQLException ex) {
         Logger lgr = Logger.getLogger(Academic.class.getName());
         lgr.log(Level.SEVERE, ex.getMessage(), ex);

      } finally {

         try {
            if (rs != null) {
               rs.close();
            }
            if (pst != null) {
               pst.close();
            }
            if (con != null) {
               con.close();
            }

         } catch (SQLException ex) {
            Logger lgr = Logger.getLogger(Academic.class.getName());
            lgr.log(Level.WARNING, ex.getMessage(), ex);
         }
      }
   }
}

// Bean Class

public class AcademicBean {

private int academicid;
private String title;
private String forename;
private String surname;
private String role;
private String room;
private String page;
private String hours;
private String phone;
private String mobile;
private String email;
private byte []  image;
private String pass; 

 //Setters

public void setAcademicId (int academicid) {
    this.academicid = academicid;
}   
public void setTitle(String title) {
    this.title = title;
}   
public void setForename(String forename) {
    this.forename = forename;
}
public void setSurname(String surname) {
    this.surname = surname;
}
public void setRole(String role) {
    this.role = role;
}
public void setRoom(String room) {
    this.room = room;
}
public void setPage(String page) {
    this.page = page;
}
public void setHours(String hours) {
    this.hours = hours;
}
public void setPhone(String phone) {
    this.phone = phone;
}
public void setMobile(String mobile) {
    this.mobile = mobile;
}

public void setEmail(String email) {
    this.email = email;
}
public void setImage (byte [] image) {

     this.image = image; 
 }
public void setPassword (String pass) {

     this.pass= pass;
 }



//Gettters 

public String getPassword () {

     return pass;  
 }

public int getAcademicId() {

     return academicid; 
 }


public byte [] getImage() {
     return image;
 }
public String getTitle() {
    return title;
}
public String getForename() {
    return forename;
}
public String getSurname() {
    return surname;
}
public String getRole() {
    return role;
}
public String getRoom() {
    return room;
}
public String getPage() {
    return page;
}
public String getHours() {
    return hours;
}
public String getPhone() {
    return phone;
}
public String getMobile() {
    return mobile;
}
public String getEmail() {
    return email;
}
}

//Stacktrace

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
  at org.sqlite.PrepStmt.(PrepStmt.java:37)
  at org.sqlite.Conn.prepareStatement(Conn.java:231)
  at org.sqlite.Conn.prepareStatement(Conn.java:224)
  at org.sqlite.Conn.prepareStatement(Conn.java:213)
  at eecsCRM.Academic.retrieveAcademic(Academic.java:68)
  at eecsCRM.MainMenu.editProfile(MainMenu.java:50)
  at eecsCRM.MainMenu.myProfileTabStateChanged(MainMenu.java:569)
  at eecsCRM.MainMenu.access$300(MainMenu.java:13)
  at eecsCRM.MainMenu$4.stateChanged(MainMenu.java:194)
  at javax.swing.JTabbedPane.fireStateChanged(JTabbedPane.java:400)
  at javax.swing.JTabbedPane$ModelListener.stateChanged(JTabbedPane.java:253)
  at javax.swing.DefaultSingleSelectionModel.fireStateChanged(DefaultSingleSelectionModel.java:116)
  at javax.swing.DefaultSingleSelectionModel.setSelectedIndex(DefaultSingleSelectionModel.java:50)
  at javax.swing.JTabbedPane.setSelectedIndexImpl(JTabbedPane.java:599)
  at javax.swing.JTabbedPane.setSelectedIndex(JTabbedPane.java:574)
  at javax.swing.plaf.basic.BasicTabbedPaneUI$Handler.mousePressed(BasicTabbedPaneUI.java:3628)
  at javax.swing.plaf.synth.SynthTabbedPaneUI$1.mousePressed(SynthTabbedPaneUI.java:279)
  at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:262)
  at java.awt.Component.processMouseEvent(Component.java:6264)
  at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
  at java.awt.Component.processEvent(Component.java:6032)
  at java.awt.Container.processEvent(Container.java:2041)
  at java.awt.Component.dispatchEventImpl(Component.java:4630)
  at java.awt.Container.dispatchEventImpl(Container.java:2099)
  at java.awt.Component.dispatchEvent(Component.java:4460)
  at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
  at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4235)
  at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
  at java.awt.Container.dispatchEventImpl(Container.java:2085)
  at java.awt.Window.dispatchEventImpl(Window.java:2478)
  at java.awt.Component.dispatchEvent(Component.java:4460)
  at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
  at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
  at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
  at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
  at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Just a wild a***'d guess: You appear to have at least two completely unrelated academicBean objects (note that the class should be named cademicBean), one in Academic, and one in MainMenu. cademicBean),一个在Academic中,一个在MainMenu中。 I have a suspicion that they should be one and the same.

Perhaps MainMenu should have:

academicBean bn = ac.getAcademicBean(); 

and Academic have:

public academicBean getAcademicBean() {
   return bean;
}

so that MainMenu can extract Academic's bean making the bean variables refer to one and the same bean object.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM