gpt4 book ai didi

java - 无法从内部类访问封闭类的 JPasswordField 对象

转载 作者:行者123 更新时间:2023-12-01 11:24:54 25 4
gpt4 key购买 nike

我是 JApplet 的新手。我不知道如何从方法 actionPerformed 内的内部类访问 JPasswordField 对象。我想将 PasswordField 添加到我的 JFrame BioReader,然后我想将 truePassword 与 JPasswordField 中的输入进行比较。我收到错误“密码无法解析为变量”。

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

也就是说,您在构造函数中定义了“密码”,因此只有构造函数中的代码可以访问该变量。

如果您希望其他方法能够访问该变量,那么您需要将其定义为类的实例变量:

public class BioReader extends JFrame{  
JPasswordField Password = new JPasswordField(10);

关于java - 无法从内部类访问封闭类的 JPasswordField 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30898828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com