从类中重用返回的用户输入值而无需重新请求来自用户的输入

时间:2013-08-29 14:42:25

标签: java class variables netbeans-7

关于Java和使用NetBeans 7,我有以下类......

     public class StaffLogin2 extends JDialog{
         JPasswordField pf = new JPasswordField();

     public static String  username(){
         String staffName=JOptionPane.showInputDialog("Enter Username:");
         return staffName;
     }

...从用户请求用户名(以及稍后以类似方式的密码)。然后将结果传递回我的主代码(TillScreen.java),这是一个JForm,其中包含密码,它用于进入我的系统。从StaffLogin2类获取这些凭据的代码如下...

      //imports, constructor etc.
     //loads of private voids up here for buttons, actions etc

     public static void main(String args[]){
      java.awt.EventQueue.invokeLater(new Runnable() {

         public void run() {
                StaffLogin2 validate=new StaffLogin2();//Initialises staff log in  
                String user=validate.username();
                String pass=validate.password();
                //Some other code here to validate credentials...

                if(pass.equals(pWd)){
                new TillScreen().setVisible(true);//Kickstarts the main form...
                }
                else{
                    JOptionPane.showMessageDialog(null,"Invalid username...");
                                   //Main form fails to load, program ends
                }

                }
            ///and some other guff
     }
     }
     //TextFields and other form items declared here....

但是,我希望能够在许多其他地方使用提供的用户名,例如在文本字段中显示,以后再打印在收据上。问题是,当我使用...

引用它时
    String somevar=StaffLogin2.username();

...提示用户重新输入他们的信息。我希望能够从课堂上获得这个用户名,而不必重新提出这个问题,因为用户名需要在很多地方使用。一旦用于登录目的,我是否可以存储此用户名?

为这个冗长的问题道歉,这个问题无疑有一个简单的答案,或者是一个响亮的“不!”。我有一个很好的老根,但到目前为止无法回答任何问题。我想我可能会遗漏一些显而易见的事情,所以提前感谢任何答案,我现在要避免那些确实传入的影响力,因为它是如此暗淡。干杯球员:))

1 个答案:

答案 0 :(得分:0)

您正在调用要求用户输入用户名的方法。相反,在StaffLogin2类中创建一个私有字段,如下所示:

private String username

并使用用户返回的值设置它,如下所示:

public void username()
{
    this.username = JOptionPane.showInputDialog("Enter Username:");
}

然后,通过调用以下getter方法在其他位置引用此字段,该方法应位于StaffLogin2类中:

public String getUsername()
{
    return username;
}

另一件事 - 如果您打算让这个应用程序一次被多个人使用,您将希望丢失方法中的“静态”修饰符并实例化一个类。无论如何,对于这样的事情来说可能是更好的做法。