2014-10-17 111 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); 
相关问题