gpt4 book ai didi

java - 嵌套类不会从母类中读取

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

我开始学习 GUI Java,我有一个“NewClass”类,它包含一个带有一些字段和一个按钮的窗口,我在这个类中嵌套了一个“Escuchador”类作为事件处理程序,但它保留给我错误“找不到这个符号”。我做了一些测试,它只是不会从“NewClass”内部读取。我不明白出了什么问题,请帮忙,这是代码:

package javaapplication1;

import javax.swing.*;
import javax.swing.JTextField;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;


public class NewClass extends JFrame {
final int FRAME_WIDTH = 300;
final int FRAME_HEIGHT = 200;

public NewClass() {
super("ARTICULACION SOCIAL");
setSize(FRAME_WIDTH, FRAME_HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel heading = new JLabel("Identifiquese para entrar");
heading.setFont(new Font("Arial", Font.BOLD, 16));
JLabel namePrompt = new JLabel("Ingrese su nombre de usuario:");
JTextField nameField = new JTextField(12);
JLabel namePrompt2 = new JLabel("Ingrese su contraseña:");
JTextField nameField2 = new JTextField(12);
JButton button = new JButton("Ingresar");
setLayout(new FlowLayout());
add(heading);
add(namePrompt);
add(nameField);
add(namePrompt2);
add(nameField2);
add(button);

Escuchador escuchar = new Escuchador();
nameField.addActionListener(escuchar);
nameField2.addActionListener(escuchar);
button.addActionListener(escuchar);

}

private class Escuchador implements ActionListener{

public void actionPerformed (ActionEvent event){
String usuario="";


if (event.getSource()== nameField) {
usuario = event.getActionCommand();
}
}
}

}

最佳答案

问题在于 nameField 是构造函数中的局部变量。它的范围不会比你的构造函数大。

您有多种选择。

nameField 设为类变量(在构造函数外部定义它),以便您的内部类能够使用它。

或者,您可以将 nameField 作为构造函数参数传递给内部类:

public class Escuchador implements ActionListener{

private JTextField nameField;

public Escuchador(JTextField nameField){
this.nameField = nameField;
}

public void actionPerformed (ActionEvent event){
String usuario = "";

if (event.getSource()== this.nameField) {
usuario = event.getActionCommand();
}
}
}

这样您甚至不需要将此类定义为内部类,顺便说一下,这是更优选的方式。

关于java - 嵌套类不会从母类中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29833912/

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