2014-10-17 108 views
1

問候:我嘗試在另一個類中聲明的GUI類中使用方法時出現問題。如何在當前類中的其他類中使用方法

這是我的門巴類中的方法,我試圖使用方法:

public void newMember(String Memb_Name,String Memb_Surname,int age,int contact,String address,String username,String password){ 
    this.Memb_Name = Memb_Name; 
    this.Memb_Surname = Memb_Surname; 
    this.age = age; 
    this.contact = contact; 
    this.address = address; 
    Memba.username = username; 
    Memba.password = password; 
} 

的方法創建一個新的成員。

在我的GUI類>>註冊類< <我想要使用的方法,我不能得到它幹活試圖創建實例,就像這樣:

Memba mmb = new Memba(); 
Memba mem= new newMember(); 
Memba mm = new Memba(s1,s2,s3,s4,s5,s6,s7); 

代碼已經獲得了在文本框中輸入的數據。

String s1 = nameFld.getText(); 
String s2 = surnameFld.getText(); 
int s3 = Integer.parseInt(ageFld.getText()); 
int s4 = Integer.parseInt(contactFld.getText()); 
String s5 = addressFld.getText(); 
String s6 = usernameFld.getText(); 
String s7 = passwordFld.getText(); 

請幫我解決這個問題。關閉。

回答

3

您需要使用該構造函數或返回Memba實例的方法,而不是void

構造

public Memba(String Memb_Name,String Memb_Surname,int age,int contact,String address,String username,String password) { 

    this.Memb_Name = Memb_Name; 
    this.Memb_Surname = Memb_Surname; 
    this.age = age; 
    this.contact = contact; 
    this.address = address; 
    this.username = username; 
    this.password = password; 
} 

方法提供新的實例(通常在工廠模式和諸如此類)

public static Memba newInstance(String Memb_Name,String Memb_Surname,int age,int contact,String address,String username,String password) { 

    // you will need to declare an empty constructor in your Memba class, 
    // _if_ you have already declared the constructor above, 
    // for the following line to compile 
    Memba result = new Memba(); 
    result.Memb_Name = Memb_Name; 
    result.Memb_Surname = Memb_Surname; 
    result.age = age; 
    result.contact = contact; 
    result.address = address; 
    result.username = username; 
    result.password = password; 
    return result; 
} 

  • 我的建議是堅持conventions關於變量名稱 - 即Memb_Name需要重構爲namememberName
  • void方法,你在你的問題暴露的最後分配,則似乎與分配的參數static領域你的方法。在這裏,我假設他們是在Memba
+1

關於代碼約定偉大的意見。 – Insanovation 2014-10-17 12:57:02

+0

謝謝,關於公約的偉大建議。我將changinf my newMember方法轉化爲構造方法。實例化難度一直存在。 – 2014-10-17 13:45:27

+0

@TumoMompatiMompsKontle歡迎您! – Mena 2014-10-17 13:46:06

0

事實上實例字段有兩種選擇,使用非靜態無效的方法,你需要一個實例調用newMember上。像,

Memba mmb = new Memba(); 
mmb.newMember(s1,s2,s3,s4,s5,s6,s7); 

或者,改變newMember返回一個Memba(並static),像

public static Memba newMember(String Memb_Name,String Memb_Surname, 
     int age,int contact,String address,String username,String password){ 
    Memba m = new Memba(); 
    m.Memb_Name = Memb_Name; 
    m.Memb_Surname = Memb_Surname; 
    m.age = age; 
    m.contact = contact; 
    m.address = address; 
    m.username = username; 
    m.password = password; 
    return m; 
} 

然後,你可以使用它像,

Memba mmb = Memba.newMember(s1,s2,s3,s4,s5,s6,s7); 
+0

謝謝@埃利奧特,請注意我是如何解決問題的。我將newMember方法改爲構造函數,並將其用作公共Memba(String MembsName,String MembsSurname,int ages,int contacts,String addresses,String username,String密碼){ \t \t \t \t \t \t this.MembName = MembsName; \t \t this.MembSurname = MembsSurname; \t \t this.age = ages; \t \t this.contact = contacts; \t \t this.address = addresses; \t \t Memba.username = usernames; \t \t Memba.password =密碼; \t \t \t \t \t \t}再次感謝您的諮詢。 – 2014-10-17 14:15:20

0

我解決我上面的問題通過創建一個我可以在GUI中重用的構造函數。

public Memba(String MembsName,String MembsSurname,int ages,int contacts,String addresses,String usernames,String passwords){ 


     this.MembName = MembsName; 
     this.MembSurname = MembsSurname; 
     this.age = ages; 
     this.contact = contacts; 
     this.address = addresses; 
     Memba.username = usernames; 
     Memba.password = passwords; 


    } 

我重新把它作爲

String s1 = nameFld.getText(); 
      String s2 = surnameFld.getText(); 
      int s3 = Integer.parseInt(ageFld.getText()); 
      int s4 = Integer.parseInt(contactFld.getText()); 
      String s5 = addressFld.getText(); 
      String s6 = usernameFld.getText(); 
      String s7 = passwordFld.getText(); 

      new Memba(s1,s2,s3,s4,s5,s6,s7); 
相關問題