如何从类中访问字符串

时间:2012-08-27 11:57:54

标签: java class public

如何从其他类访问输入的值“Username”?包内 我编码时遇到了麻烦。我应该公开一些变量吗? 我宣布用户名是公开的,但我收到错误

这是我的代码:

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
}

3 个答案:

答案 0 :(得分:2)

当您接受输入时,将private个全局非静态字段保留usernamepassword字段,将值分配给全局username和{{1变量。然后使用password的getter方法并返回该实例的publicusername

类似的东西:

password
然后你会做类似的事情:

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

答案 1 :(得分:2)

您需要为您的私有变量设置公共setter和getter,以便从您的类的外部调用或编辑您的私有变量。这称为encapsulation OOP的重要概念之一{{1}}。你可能想谷歌知道更多。

答案 2 :(得分:1)

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

Private声明的变量使用getter方法。并制作那些getter方法Public