내 프로그램을 실행하는 동안 항상 "스레드의 예외"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());
}
}
감사합니다.
코드를 올바르게 포맷하십시오. – sdasdadas
코드가 너무 길어요. 너의 stacktrace을 보여 주시겠습니까? – Smit
첫 번째 코드 집합은 Member Class이고 두 번째 코드는 AddMemberView (GUI)입니다. 나는 그것이 올바른 형식이라고 생각한다. – rheighy