Java 爪哇元';不能识别定义的变量?

Java 爪哇元';不能识别定义的变量?,java,Java,在actionPerformed中,似乎所有变量(submit、msg、input)都无法根据Eclipse进行解析。根据我的经验(我几乎没有经验),这意味着我没有定义变量。但是,正如您在代码中看到的,我已经定义了它们。Submit是一个JButton,msg是一个字符串,input是一个JTextField package levels; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.eve

actionPerformed
中,似乎所有变量(submit、msg、input)都无法根据Eclipse进行解析。根据我的经验(我几乎没有经验),这意味着我没有定义变量。但是,正如您在代码中看到的,我已经定义了它们。Submit是一个JButton,msg是一个字符串,input是一个JTextField

package levels;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

import java.util.*;

public class LevelOne extends JFrame implements ActionListener{

    private Object msg;

    public void one(){

        setTitle("Conjugator");
        setSize(400,400);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);

        setLayout(new BorderLayout());
        setContentPane(new JLabel(new ImageIcon("images/LevelOneBG.gif")));
        setLayout(new FlowLayout());

        JTextArea area = new JTextArea("You enter a castle. A Goblin demands you correct his sentences!");
        add(area);
        setVisible(true);

        //these aren't being called to actionPerformed
        JButton submit = new JButton("Check sentence");
        submit.addActionListener(this);
        setVisible(true);
        JTextField input = new JTextField("Ich spielen Golf.");
        input.setActionCommand("input");
        add(input);
        input.addActionListener(this);
        setVisible(true);

        String msg = ("Test successful");
    }   

    //this should be successfully locating and utilizing "submit", "input" and "msg", but it won't
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == submit) {
            msg = submit.getText();

            //!!  Display msg only **after** the user has pressed enter.
            input.setText(msg); 
        }

    }
}
我知道我的一些进口产品是不必要的


另外,我正在为我的德语课制作一个小文本冒险游戏

您在方法
one()
中将变量定义为局部变量。根据定义,局部变量是。。。地方的它们仅在此处定义的块中可见。要在
one()
actionPerformed()
中可见,它们应定义为类的字段


另一种方法是使用
one()
方法中定义的匿名内部类来定义动作监听器,但如果您还没有掌握变量,最好稍后再使用匿名类。Swing是一个复杂的框架,在执行Swing之前,您可能需要做一些更基本的编程练习。

您在方法
one()
中将变量定义为局部变量。根据定义,局部变量是。。。地方的它们仅在此处定义的块中可见。要在
one()
actionPerformed()
中可见,它们应定义为类的字段


另一种方法是使用
one()
方法中定义的匿名内部类来定义动作监听器,但如果您还没有掌握变量,最好稍后再使用匿名类。Swing是一个复杂的框架,在执行Swing之前,您可能应该做一些更基本的编程练习。

这是因为
输入
提交
变量在
操作执行
方法中不可访问

使
输入
提交
变量类成员,如下所示:

pubilc class LevelOne {
    private JTextField input = new JTextField("Ich spielen Golf.");
    private Object msg;
    private JButton submit = new JButton("Check sentence");


    public void one() { ... }

    public void actionPerformed(ActionEvent e) { ... }
}

这是因为
input
submit
变量在
actionPerformed
方法中不可访问

使
输入
提交
变量类成员,如下所示:

pubilc class LevelOne {
    private JTextField input = new JTextField("Ich spielen Golf.");
    private Object msg;
    private JButton submit = new JButton("Check sentence");


    public void one() { ... }

    public void actionPerformed(ActionEvent e) { ... }
}

这些变量的作用域仅为one()方法。如果您希望整个类都可以使用这些变量,请将它们放在msg旁边的顶部。

这些变量的作用域仅为one()方法。如果希望整个类都可以使用它们,请将它们放在msg旁边的顶部。

变量
submit
在方法
one()
中定义为局部变量


它在方法
actionPerformed()
中不可用。变量
submit
在方法
one()
中定义为局部变量


它在方法
actionPerformed()
中不可用。您需要在方法“One”之外声明变量,如:

private JButton submit = new JButton("Check sentence");

public void one(){
    // whatever goes there
}

public void actionPerformed(ActionEvent e) {
   // submit is now working 
   if (e.getSource() == submit) {
   }
}

您需要在方法“One”之外声明变量,如:

private JButton submit = new JButton("Check sentence");

public void one(){
    // whatever goes there
}

public void actionPerformed(ActionEvent e) {
   // submit is now working 
   if (e.getSource() == submit) {
   }
}

请合理地缩进代码,很难说事情的范围应该是什么。对不起。我以后会记住这一点。同时,你有办法解决我的问题吗?。阅读本教程时,应注意实例变量(字段)和局部变量(方法中定义的变量)之间的差异。特别是这样的部分:“局部变量只对声明它们的方法可见;它们不能从类的其余部分访问。”@user2426434我不知道,因为我不知道这些变量是变量还是字段,因为你的缩进不稳定,很难看到方法的开始或结束。(好的,所以我并不是真的在关注你的代码。重点是,格式化是代码结构中一个非常强烈的视觉暗示。)请理智地缩进你的代码,很难说事情的范围应该是什么。对不起。我以后会记住这一点。同时,你有办法解决我的问题吗?。阅读本教程时,应注意实例变量(字段)和局部变量(方法中定义的变量)之间的差异。特别是这样的部分:“局部变量只对声明它们的方法可见;它们不能从类的其余部分访问。”@user2426434我不知道,因为我不知道这些变量是变量还是字段,因为你的缩进不稳定,很难看到方法的开始或结束。(好的,所以我并不是真的在关注你的代码。重点是,格式化是代码结构中一个非常强大的视觉提示。)谢谢。我应该看到的,谢谢。我应该看到的。