无法从内部 class 访问封闭 class 的 JPasswordField 对象
Can't access JPasswordField object of enclosing class from inner class
我是新手 JApplet.I 无法弄清楚如何从方法内部 class 访问 JPasswordField 对象 actionPerformed.I 想将 PasswordField 添加到我的 JFrame BioReader 然后我想将 truePassword 与 JPasswordField.I 中的输入进行比较,得到错误“密码无法解析为变量”。
import javax.swing.JFrame;
import javax.swing.JPasswordField;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class BioReader extends JFrame{
public BioReader(){
super("BioTech Inc.");
setLayout(new FlowLayout());
JPasswordField Password = new JPasswordField(10);
add(Password);
BioReader.theHandler eventHandler = new BioReader.theHandler();
Password.addActionListener(eventHandler);
}
private class theHandler implements ActionListener {
public void actionPerformed(ActionEvent event){
if(event.getSource()==Password) //error
String.format("You typed: %s",event.getActionCommand());
}//actionPerformed ended
}//class theHandler ended
}//class BioReader ended
首先,变量名不应该以大写字符开头。您的一些变量名是正确的,有些则不是。保持一致并遵循 Java 约定!
.I can't figure out how to access JPasswordField object from inner class
您可以访问 ActionEvent 的来源,即生成事件的组件:
JPasswordField passwordField = (JPasswordField)event.getSource();
String text = passwordField.getText();
编辑:
What's wrong with mine?
我没看过视频所以我不知道这段代码的作用,但你的问题是你将密码字段定义为局部变量,而不是实例变量。
JPasswordField Password = new JPasswordField(10);
那是您在构造函数中定义了 "password",因此只有构造函数中的代码才能访问该变量。
如果您希望其他方法能够访问该变量,则需要将其定义为 class:
的实例变量
public class BioReader extends JFrame{
JPasswordField Password = new JPasswordField(10);
我是新手 JApplet.I 无法弄清楚如何从方法内部 class 访问 JPasswordField 对象 actionPerformed.I 想将 PasswordField 添加到我的 JFrame BioReader 然后我想将 truePassword 与 JPasswordField.I 中的输入进行比较,得到错误“密码无法解析为变量”。
import javax.swing.JFrame;
import javax.swing.JPasswordField;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class BioReader extends JFrame{
public BioReader(){
super("BioTech Inc.");
setLayout(new FlowLayout());
JPasswordField Password = new JPasswordField(10);
add(Password);
BioReader.theHandler eventHandler = new BioReader.theHandler();
Password.addActionListener(eventHandler);
}
private class theHandler implements ActionListener {
public void actionPerformed(ActionEvent event){
if(event.getSource()==Password) //error
String.format("You typed: %s",event.getActionCommand());
}//actionPerformed ended
}//class theHandler ended
}//class BioReader ended
首先,变量名不应该以大写字符开头。您的一些变量名是正确的,有些则不是。保持一致并遵循 Java 约定!
.I can't figure out how to access JPasswordField object from inner class
您可以访问 ActionEvent 的来源,即生成事件的组件:
JPasswordField passwordField = (JPasswordField)event.getSource();
String text = passwordField.getText();
编辑:
What's wrong with mine?
我没看过视频所以我不知道这段代码的作用,但你的问题是你将密码字段定义为局部变量,而不是实例变量。
JPasswordField Password = new JPasswordField(10);
那是您在构造函数中定义了 "password",因此只有构造函数中的代码才能访问该变量。
如果您希望其他方法能够访问该变量,则需要将其定义为 class:
的实例变量public class BioReader extends JFrame{
JPasswordField Password = new JPasswordField(10);