2012-12-19 5 views
-1

내 프로그램을 실행하는 동안 항상 "스레드의 예외"AWT-EventQueue-0 "java.lang.NullPointerException"오류가 발생합니다. 나는 멤버 클래스를 가지고 있는데, 여기에서 setter와 getter를 코딩한다. 이드들이 필요한 모든 엔티티들. 지금은 "관리자 클래스"다른 방법이setter 및 getter에서 NULL이 발생합니다. - Java

public class Admin { 
    private ArrayList<Member> members; 
    private String AccessName; 
    private String username; 
    private String password; 

    public Admin(){ 
     this.AccessName="Ms. April Santos"; 
     this.username = "estella"; 
     this.password = "teller"; 
     this.members = new ArrayList<Member>(); 
    } 

    public ArrayList<Member> getMembers() { 
     return members; 
    } 

    public void setMembers(ArrayList<Member> members) { 
     this.members = members; 
    } 

    public String getPassword() { 
     return password; 
    } 

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

    public String getAccessName() { 
     return AccessName; 
    } 

    public void setAccessName(String AccessName) { 
     this.AccessName=AccessName;; 
    } 

    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 

    @Override 
    public boolean equals(Object obj) { 
     if (obj == null) { 
      return false; 
     } 
     if (getClass() != obj.getClass()) { 
      return false; 
     } 
     final Admin other = (Admin) obj; 
     if ((this.username == null) ? (other.username != null) : !this.username.equals(other.username)) { 
      return false; 
     } 
     return true; 
    } 

    @Override 
    public int hashCode() { 
     int hash = 7; 
     hash = 97 * hash + (this.username != null ? this.username.hashCode() : 0); 
     return hash; 
    } 

    @Override 
    public String toString() { 
     return "Admin{" + "members=" + members + ", AccessName;=" + AccessName + ", username=" + username + ", password=" + password + '}'; 
    } 

     public Member searchMember(Member member){ 
     return this.searchMember(member.getMemberId()); 
    } 

     public Member searchMember(String memberId){ 
      for(Member member : this.members){ 
      if(member.getMemberId().equals(memberId)){ 
       return member; 
      } 
      } 
      return null; 
    } 

    public Member addMember(Member member){ 
     if (this.searchMember(member) == null){ 
      this.members.add(member); 
      return member; 
     } 
     return null; 
    } 

    public Member addMember(String memberId, String firstName,String middleName, String lastName){ 
     if (this.searchMember(memberId) == null){ 
      Member member = new Member(memberId, firstName,middleName, lastName); 
      this.members.add(member); 
      return member; 
     } 
     return null; 
    } 

    public boolean validateLogin(String username, String password){ 
     boolean valid = false; 
     valid = this.username.equals(username) && this.password.equals(password); 
     return valid; 
    } 

    } 

지금 내 AddMemberView (GUI) 공공 addMember (문자열 MEMBERID, 문자열 firstName을, 문자열 가운데 이름, 문자열과 lastName)를 호출 메신저. 나는 textfield/combobox에있는 모든 텍스트를 가져 와서 임시 저장하고 데이터베이스에 저장할 준비가되도록 설정하려고합니다. DAO를 코딩합니다. 이건 내 AddMemberView btnSave 액션 모양입니다.

import java.sql.SQLException; 
import java.text.*; 
import java.util.*; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.swing.JOptionPane; 
import rtu.tomis.bom.Admin; 
import rtu.tomis.bom.Member; 
import rtu.tomis.dao.MemberDao; 

public class AddMemberView extends javax.swing.JPanel { 

private MainFrameView mainFrameView; 
private Member member; 
    private Admin admin; 

    AddMemberView(Member memb, Admin admin){ 

    this.member= memb; 
    this.admin= admin; 

} 

public AddMemberView() { 
    initComponents(); 
} 

    public AddMemberView(MainFrameView mf) { 
    this.mainFrameView = mf; 
    initComponents(); 
} 

    public AddMemberView(Member m) { 
    this.member = m; 
    initComponents(); 
} 

    private void btnSaveActionPerformed(java.awt.event.ActionEvent evt) {           
    String memberid = (this.txtMembersID.getText()); 
    String fname= (this.txtFirstName.getText()); 
    String mname=(this.txtMiddleName.getText()); 
    String lname=(this.txtLastName.getText()); 
    if(this.admin.addMember(memberid, fname,mname, lname) != null)//im having null here 
    { 
     try{ 
      member = this.admin.searchMember(memberid);// and if i remove that 1st line of null. the next null pointer is here 
      String month = (String)cmbMonth.getSelectedItem(); 
      Integer day = (Integer) cmbDay.getSelectedItem(); 
      Integer year = (Integer)cmbYear.getSelectedItem(); 
      String bday = month + " " + day + ", " + year; 
      DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.US); 
      Date dateBday = df.parse(bday); 
      String Block = this.txtBlkLotNo.getText(); 
      String Street = (String)this.cmbStreet.getSelectedItem(); 
      String Brgy=(String)this.cmbBarangay.getSelectedItem(); 
      String City= (String)this.cmbCity.getSelectedItem(); 
      String Address = Block + " " + "" + Street + " ," + Brgy + " ," + City; 
      String Full = fname + " " + mname + " " + lname; 
      int age= Integer.parseInt(this.txtAge.getText()); 
      int contact = Integer.parseInt(this.txtContact.getText()); 
      String region =(String) this.cmbRegion.getSelectedItem(); 

      this.member.setFirstName(fname);// then if i remove the two my next null line is here and those who have this.**member**.setblabla. 
      this.member.setMiddleName(mname); 
      this.member.setLastName(lname); 
      this.member.setFullname(Full); 
      this.member.setLotNo(Block); 
      this.member.setBarangay(Brgy); 
      this.member.setCity(City); 
      this.member.setFulladdress(Address); 
      this.member.setBirthday(dateBday); 
      this.member.setAge(age); 
      this.member.setEmailAddress(this.txtEadd.getText()); 
      this.member.setVotersId(this.txtVotersID.getText()); 
      this.member.setContactNo(contact); 
      this.member.setRegion(region); 
      this.member.setMemberId(memberid); 
      if(this.rbtnFemale != null){ 
       this.member.setGender(this.rbtnFemale.getLabel()); 
      } 
       else{ 
       this.member.setGender(this.rbtnFemale.getLabel()); 
      } 

     }catch (ParseException ex) { 
      System.out.println("Exception: "+ ex.getMessage()); 
     } 
     JOptionPane.showMessageDialog(this, "Info saved!"); 
     JOptionPane.showMessageDialog(this,"Name" + this.member.getFirstName()); 

    } 

}     

감사합니다.

+1

코드를 올바르게 포맷하십시오. – sdasdadas

+2

코드가 너무 길어요. 너의 stacktrace을 보여 주시겠습니까? – Smit

+0

첫 번째 코드 집합은 Member Class이고 두 번째 코드는 AddMemberView (GUI)입니다. 나는 그것이 올바른 형식이라고 생각한다. – rheighy

답변

2

"admin"변수가 null이라고 생각합니다. 당신은 당신의 생성자에게 전화합니까? 그렇다면 매개 변수가 정확합니까?

"private admin admin"이라고 쓰면 관리 변수가 관리 객체가되지 않습니다. 그것을 초기화하거나 생성자를 적절하게 호출 해보십시오.

+0

나는 여전히 같은 오류를 발생합니다. – rheighy

+0

@smit와 (과) 같은 stacktrace를 표시해주십시오. 그것은 우리가 당신 : 스레드에서 –

+0

'예외 도움이 도움이 될 것 "AWT-EventQueue의-0"java.lang.NullPointerException이 rtu.tomis.gui.AddMemberView.btnSaveActionPerformed에서 \t (AddMemberView.java:948) rtu.tomis에서 \t .gui.AddMemberView.access $ 800 (AddMemberView.java:21) \t at rtu.tomis.gui.AddMemberView $ 9.actionPerformed (AddMemberView.java:475) ' – rheighy

관련 문제