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我不知道,因为我不知道这些变量是变量还是字段,因为你的缩进不稳定,很难看到方法的开始或结束。(好的,所以我并不是真的在关注你的代码。重点是,格式化是代码结构中一个非常强大的视觉提示。)谢谢。我应该看到的,谢谢。我应该看到的。