简体   繁体   English

如何从课程中访问字符串

[英]How do I access a string from a class

how would I access the entered value "Username" from another class? 如何从另一个类访问输入的值“用户名”? inside the package I'm having trouble coding that. 在包装内,我在编码时遇到了麻烦。 Should I declare some variable public? 我应该宣布一些变量为公开吗? I declared the Username public, but I get errors 我将用户名声明为公开,但出现错误

this is my code: 这是我的代码:

package login;

import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.JOptionPane;

@SuppressWarnings("serial")
public class Login extends javax.swing.JFrame {

    public Login() {
        initComponents0();
    }

    @SuppressWarnings("unchecked")

    private void initComponents0() {

        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        uname = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        login = new javax.swing.JButton();
        reset = new javax.swing.JButton();
        pwd = new javax.swing.JPasswordField();
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jLabel1.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        jLabel1.setText("Login Pane");
        jLabel2.setText("User Name:");
        jLabel3.setText("Password:");
        login.setText("Login");
        login.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
        String un = uname.getText();
        @SuppressWarnings("deprecation")
        String pw = pwd.getText();
        try{
                FileInputStream fstream = new FileInputStream("data.dat");
                try (DataInputStream in = new DataInputStream(fstream)) {
                BufferedReader br = new BufferedReader(new InputStreamReader(in));
                String strLine;
                boolean registered = false;
                boolean registered0 = false;
                while ((strLine = br.readLine()) != null)   {
                String values[] = strLine.split("\\|");
                if ((strLine.startsWith(un))&&(pw.equals(values[1]))){
                registered = true;
                break;
                }
                if ((strLine.startsWith(un))&&(!pw.equals(values[1]))){
                registered0 = true;
                break;
                }
                }
                if(registered){
                  JOptionPane.showMessageDialog(null,"Hello: "+un ,"Registration",JOptionPane.INFORMATION_MESSAGE);
                  File file = new File("temp.dat");
                try {
                                try (FileWriter writer = new FileWriter(file, false)) {
                                String data0 = un;
                                writer.write(data0);
                                }} 
                catch (IOException | HeadlessException z) {
                                JOptionPane.showMessageDialog(null, e);
                                }
                }
                else if(registered0){JOptionPane.showMessageDialog(null,"It seems you entered a wrong password! \n Please try again " ,"Admin",JOptionPane.INFORMATION_MESSAGE);}
                else
                {
                int sel = JOptionPane.showConfirmDialog(null,"It seems that you haven't registered yet? \n Launch Registration Pane?","Admin",JOptionPane.INFORMATION_MESSAGE);
                if (sel == JOptionPane.YES_OPTION){
                java.awt.EventQueue.invokeLater(new Runnable() {
                @Override
                public void run() {
                new Register().setVisible(true);
                }});}

                }}}
                catch (  IOException | HeadlessException ez){
                JOptionPane.showMessageDialog(null,"A null file was created in order to \n avoid File Catch errors","Admin",JOptionPane.INFORMATION_MESSAGE);
                File file = new File("data.dat");
                try {
                                try (FileWriter writer = new FileWriter(file, true)) {
                                String data0 = "null";
                                String data1 = "null";
                                writer.write(data0+" | "+data1+"\n");
                                }} 
                catch (IOException | HeadlessException z) {
                                JOptionPane.showMessageDialog(null, e);
                                }
                }
        }});
        reset.setText("Reset Field");
        reset.addActionListener(new ActionListener() {
                            @Override
                            public void actionPerformed(ActionEvent e) {
                                uname.setText("");
                                pwd.setText("");
                                } 
                                });
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jLabel1)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel2)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(uname, javax.swing.GroupLayout.PREFERRED_SIZE, 300, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel3)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(login, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(reset, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addComponent(pwd))))
                .addContainerGap(30, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(uname, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(pwd, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(login)
                    .addComponent(reset))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
       java.awt.EventQueue.invokeLater(new Runnable() {
       @Override
            public void run() {
                new Login().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JButton login;
    private javax.swing.JPasswordField pwd;
    private javax.swing.JButton reset;
    private javax.swing.JTextField uname;
    // End of variables declaration
}

edited 已编辑

package login;

import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.JOptionPane;

@SuppressWarnings("serial")
public class Login extends javax.swing.JFrame {
private String username,password;
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}

    public Login() {
        initComponents0();
    }

    @SuppressWarnings("unchecked")

    private void initComponents0() {

        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        uname = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        login = new javax.swing.JButton();
        reset = new javax.swing.JButton();
        pwd = new javax.swing.JPasswordField();
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jLabel1.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        jLabel1.setText("Login Pane");
        jLabel2.setText("User Name:");
        jLabel3.setText("Password:");
        login.setText("Login");
        login.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
        String un = uname.getText();
        @SuppressWarnings("deprecation")
        String pw = pwd.getText();
        username = un;
        password = pw;

        try{
                FileInputStream fstream = new FileInputStream("data.dat");
                try (DataInputStream in = new DataInputStream(fstream)) {
                BufferedReader br = new BufferedReader(new InputStreamReader(in));
                String strLine;
                boolean registered = false;
                boolean registered0 = false;
                while ((strLine = br.readLine()) != null)   {
                String values[] = strLine.split("\\|");
                if ((strLine.startsWith(un))&&(pw.equals(values[1]))){
                registered = true;
                break;
                }
                if ((strLine.startsWith(un))&&(!pw.equals(values[1]))){
                registered0 = true;

                break;
                }
                }
                if(registered){

                  username = un;
                  password = pw;

                  JOptionPane.showMessageDialog(null,"Hello: "+un ,"Registration",JOptionPane.INFORMATION_MESSAGE);
                  File file = new File("temp.dat");
                try {
                                try (FileWriter writer = new FileWriter(file, false)) {
                                String data0 = un;
                                writer.write(data0);
                                }} 
                catch (IOException | HeadlessException z) {
                                JOptionPane.showMessageDialog(null, e);
                                }
                }
                else if(registered0){JOptionPane.showMessageDialog(null,"It seems you entered a wrong password! \n Please try again " ,"Admin",JOptionPane.INFORMATION_MESSAGE);}
                else
                {
                int sel = JOptionPane.showConfirmDialog(null,"It seems that you haven't registered yet? \n Launch Registration Pane?","Admin",JOptionPane.INFORMATION_MESSAGE);
                if (sel == JOptionPane.YES_OPTION){
                java.awt.EventQueue.invokeLater(new Runnable() {
                @Override
                public void run() {
                new Register().setVisible(true);
                }});}

                }}}
                catch (  IOException | HeadlessException ez){
                JOptionPane.showMessageDialog(null,"A null file was created in order to \n avoid File Catch errors","Admin",JOptionPane.INFORMATION_MESSAGE);
                File file = new File("data.dat");
                try {
                                try (FileWriter writer = new FileWriter(file, true)) {
                                String data0 = "null";
                                String data1 = "null";
                                writer.write(data0+" | "+data1+"\n");
                                }} 
                catch (IOException | HeadlessException z) {
                                JOptionPane.showMessageDialog(null, e);
                                }
                }
        }});
        reset.setText("Reset Field");
        reset.addActionListener(new ActionListener() {
                            @Override
                            public void actionPerformed(ActionEvent e) {
                                uname.setText("");
                                pwd.setText("");
                                } 
                                });
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jLabel1)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel2)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(uname, javax.swing.GroupLayout.PREFERRED_SIZE, 300, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel3)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(login, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(reset, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addComponent(pwd))))
                .addContainerGap(30, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(uname, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(pwd, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(login)
                    .addComponent(reset))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }

    /*
     * @param args the command line arguments
     */
    public static void main(String args[]) {
       java.awt.EventQueue.invokeLater(new Runnable() {
       @Override
            public void run() {
                new Login().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JButton login;
    private javax.swing.JPasswordField pwd;
    private javax.swing.JButton reset;
    private javax.swing.JTextField uname;
    // End of variables declaration
}

Make private global non-static fields to hold the username and password fields, when you accept the input assign the values to your global username and password variables. private全局非静态字段保存为usernamepassword字段,当您接受输入时,将值分配给全局usernamepassword变量。 Then have getter method(s) which are public and return the username and password for that instance. 然后使用public getter方法,并返回该实例的usernamepassword

something like: 就像是:

public class Login extends javax.swing.JFrame {
private String username,password;//assign private global fields for the instance

//the variables are assigned when you accept user input

public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
}

you'd then do something like: 然后您将执行以下操作:

Login lg=new Login();//create new instance to gain access to getter methods
//wait for it to return or until user has enetered the credentials
System.out.println(lg.getUsername());
System.out.println(lg.getPassword());

You need to have public setters and getters for you private variables in order to call or edit your private variables from out side of your class. 为了从类的外部调用或编辑私有变量,您需要为私有变量提供公共的setter和getter。 This is called as encapsulation one of the important concept of OOP . 这被称为encapsulation OOP的重要概念之一。 You may want to google for it know more. 您可能想对它了解更多。

Declare the variable in global scope and also declare those variables with Public access specifier. 在全局范围内声明变量,并使用“ Public访问”说明符声明这些变量。 Or 要么

use getter method for Private declared variables .And make those getter method Public . Private声明的变量使用getter方法,并将这些getter方法设为Public

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM