[英]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
全局非静态字段保存为username
和password
字段,当您接受输入时,将值分配给全局username
和password
变量。 Then have getter method(s) which are public
and return the username
and password
for that instance. 然后使用
public
getter方法,并返回该实例的username
和password
。
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.