簡體   English   中英

如何從課程中訪問字符串

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

如何從另一個類訪問輸入的值“用戶名”? 在包裝內,我在編碼時遇到了麻煩。 我應該宣布一些變量為公開嗎? 我將用戶名聲明為公開,但出現錯誤

這是我的代碼:

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
}

private全局非靜態字段保存為usernamepassword字段,當您接受輸入時,將值分配給全局usernamepassword變量。 然后使用public getter方法,並返回該實例的usernamepassword

就像是:

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。 這被稱為encapsulation OOP的重要概念之一。 您可能想對它了解更多。

在全局范圍內聲明變量,並使用“ Public訪問”說明符聲明這些變量。 要么

Private聲明的變量使用getter方法,並將這些getter方法設為Public

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM