1

これは私のプロファイルと編集プロファイルの 2 つのタブで構成される GUI である私のクラスです。インデックス値が 1 に変わると、'myProfileTabStateChanged' メソッドで問題が発生します。タブ インデックスが 0 の場合、'myProfile()' メソッドは正常に実行されますが、インデックスが 1 の場合、'editProfile()' で発生するエラーが多すぎます。 . editprofile() の目的は、Bean クラスから値を抽出し、それをテキストフィールドに適切に設定することです。私は何を間違っていますか?bean クラス変数はセッター メソッドを使用して正しく設定されていますが、このクラスではゲッターを使用して値を取得できないことに注意してください。おそらく取得していますが、問題はテキストフィールドに設定できないことにあります。

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(); 
        }
    }

//クラスアカデミック

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 クラス

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;
}
}

//スタックトレース

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

1 に答える 1

1

ただの野蛮な推測:少なくとも2つの完全に無関係なacademicBeanオブジェクト(クラスはA cademicBeanという名前にする必要があることに注意してください)があり、1つはAcademicに、もう1つはMainMenuにあるようです。私はそれらが同一であるべきだと疑っています。

おそらくMainMenuには次のものが必要です。

academicBean bn = ac.getAcademicBean(); 

とアカデミックは:

public academicBean getAcademicBean() {
   return bean;
}

MainMenuがAcademicのBeanを抽出して、Bean変数が1つの同じBeanオブジェクトを参照できるようにします。

于 2012-12-29T13:02:03.957 に答える