Java 如何从类中访问字符串

Java 如何从类中访问字符串,java,class,public,Java,Class,Public,如何从另一个类访问输入的值Username?包装内 我在编码上有困难。我应该声明一些变量为public吗? 我声明用户名为public,但出现错误 这是我的代码: package login; import java.awt.HeadlessException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.*; import javax.swing.JOption

如何从另一个类访问输入的值Username?包装内 我在编码上有困难。我应该声明一些变量为public吗? 我声明用户名为public,但出现错误

这是我的代码:

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
}
编辑

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
}
使私有全局非静态字段保留用户名和密码字段,当您接受输入时,将值分配给全局用户名和密码变量。然后使用公共的getter方法并返回该实例的用户名和密码

比如:

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;
}
}
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());
然后你会做一些类似的事情:

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;
}
}
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());
使私有全局非静态字段保留用户名和密码字段,当您接受输入时,将值分配给全局用户名和密码变量。然后使用公共的getter方法并返回该实例的用户名和密码

比如:

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;
}
}
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());
然后你会做一些类似的事情:

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;
}
}
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());

为了从类外部调用或编辑私有变量,您需要为私有变量设置公共setter和getter。这被称为封装,是OOP的重要概念之一。您可能想通过谷歌了解更多信息。

您需要为您的私有变量设置公共setter和getter,以便从类外部调用或编辑您的私有变量。这被称为封装,是OOP的重要概念之一。您可能想通过谷歌了解更多信息。

在全局范围内声明变量,并使用公共访问说明符声明这些变量。或


对私有声明的变量使用getter方法。并将这些getter方法公开。

在全局范围内声明变量,并使用公共访问说明符声明这些变量。或


对私有声明的变量使用getter方法。并将这些getter方法公开。

全局是什么意思?@f_puras global,当然是可以在整个包含类中访问的变量OK,而不是局部变量。我没想到。谢谢我把这个放在哪里?在新班级?登录lg=新登录//创建新实例以获得对getter方法的访问//等待它返回,或者直到用户已输入凭据System.out.printlnlg.getUsername;System.out.printlnlg.getPassword;当我运行它时,即使我在field@JFetz2191因为它如何知道何时输入值?您需要某种布尔值,它在用户名和密码被指定之前是假的,然后只有在输入完成后才打印。您所说的全局是什么意思?@f_puras global,当然是可以在整个包含类中访问的变量OK,而不是局部变量。我没想到。谢谢我把这个放在哪里?在新班级?登录lg=新登录//创建新实例以获得对getter方法的访问//等待它返回,或者直到用户已输入凭据System.out.printlnlg.getUsername;System.out.printlnlg.getPassword;当我运行它时,即使我在field@JFetz2191因为它如何知道何时输入值?您需要某种布尔值,在用户名和密码被指定之前为false,然后仅在输入时打印