有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java重用从类返回的用户输入值,而不重新请求用户输入

关于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) 个答案

  1. # 1 楼答案

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

    private String username

    并将其设置为用户返回的值,如下所示:

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

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

    public String getUsername()
    {
        return username;
    }
    

    还有一件事——如果你想让这个应用程序一次被多个人使用,你会想失去方法上的“静态”修饰符,并实例化一个类。不管怎样,这可能是更好的练习