Java JLabel不是';无法在ActionListener中正确识别
我问这是一个非常万不得已的办法,因为我一直无法找到任何关于这个随机数游戏的问题的帮助 问题是,当我试图运行程序时,ActionListener中有一个错误,它说“猜结果无法解决”Java JLabel不是';无法在ActionListener中正确识别,java,swing,user-interface,scope,jlabel,Java,Swing,User Interface,Scope,Jlabel,我问这是一个非常万不得已的办法,因为我一直无法找到任何关于这个随机数游戏的问题的帮助 问题是,当我试图运行程序时,ActionListener中有一个错误,它说“猜结果无法解决” import java.awt.*; 导入java.awt.event.*; 导入javax.swing.*; 导入java.util.Random; 公共类Project8扩展了JFrame { 私有JTextField numGuessFld; 私人JButton猜测btn、猜测againbtn、播放againbt
import java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
导入java.util.Random;
公共类Project8扩展了JFrame
{
私有JTextField numGuessFld;
私人JButton猜测btn、猜测againbtn、播放againbtn;
私有内部随机数;
私有容器c=getContentPane();
私有整数;
private Random rn=新的Random();
公共静态void main(字符串[]args)
{
Project8 frm=新项目8();
frm.设置尺寸(400150);
frm.setVisible(真);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}//端干管
公共项目8()
{
c、 setLayout(新的FlowLayout());
setTitle(“猜数字游戏”);
JLabel GameScriptbl=新的JLabel(“我有一个介于1和1000之间的数字,你能猜出我的数字吗?”);
c、 添加(gameDescriptbl);
JLabel numGuessLbl=新JLabel(“请输入您的第一个猜测”);
c、 添加(numGuessLbl);
numGuessFld=新的JTextField(4);
c、 添加(numGuessFld);
guessBtn=新的JButton(“猜测”);
c、 添加(BTN);
guessAgainBtn=新按钮(“再次猜测”);
guessAgainBtn.setEnabled(假);
c、 加上(n);
playAgainBtn=新的JButton(“再次播放?”);
playAgainBtn.setEnabled(假);
c、 添加(playAgainBtn);
JLabel guessResult=新的JLabel(“”);
c、 添加(猜测结果);
Handler=newhandler();
numGuessFld.addActionListener(处理程序);
guessBtn.addActionListener(处理程序);
guessAgainBtn.addActionListener(处理程序);
playAgainBtn.addActionListener(处理程序);
randNum=rn.nextInt(1000)+1;
}//结束构造函数项目8
私有类处理程序实现ActionListener
{
已执行的公共无效操作(操作事件e)
{
如果(例如getSource()==guessBtn)
{
字符串输入=numGuessFld.getText();
numguesed=Integer.parseInt(输入);
System.out.println(numguesed);
System.out.println(randNum);
if(numguesedrandNum)
{
c、 挫折地面(颜色:红色);
猜结果。setText(“太高了!”);
guessAgainBtn.setEnabled(真);
}
else if(numguesed==randNum)
{
c、 挫折地面(颜色:黄色);
猜结果。setText(“正确!”);
guessAgainBtn.setEnabled(假);
猜测btn.setEnabled(false);
numGuessFld.退根地面(颜色为绿色);
numGuessFld.setEditable(假);
playAgainBtn.setEnabled(真);
}
}//结束猜测如果
如果(例如getSource()==guessAgainBtn)
{
numGuessFld.SETEXT(“”);
}//如有必要,结束猜测
如果(例如getSource()==playAgainBtn)
{
c、 倒退(空);
numGuessFld.SETEXT(“”);
guessAgainBtn.setEnabled(假);
guessBtn.setEnabled(真);
numGuessFld.立根点(空);
numGuessFld.setEditable(真);
playAgainBtn.setEnabled(假);
randNum=rn.nextInt(1000)+1;
}//如果需要,结束播放
}//已执行的结束操作
}//末端处理器
}//完项目8
任何帮助都将不胜感激…特别是如果它在4:30之前到达:)谢谢 您有一个范围问题。尝试将
guessResult
设置为成员变量,而不是局部变量。guessResult
仅在构造函数中定义,因此任何其他方法都不可见。如果你想在其他地方访问它,你应该让它成为你班上的一员。非常感谢你的快速回复!工作得很有魅力!(我会接受答案,当它允许我)这给了我这么多的麻烦,这么简单的修复…再次感谢!似乎您正在使用一些简单的文本编辑器。如果您使用Eclipse、Netbeans或IntelliJ IDEA等IDE,它们会给您很大帮助,因为它们能够在您运行代码之前突出显示代码中的此类错误,并提供一些有用的提示。@hage我正在使用Eclipse,这就是我在运行之前遇到问题的地方。谢谢你的建议!我的“教授”(不是很好的imho教授)让我们在课堂上使用JGrasp,但我的闪存驱动器上有eclipse作为便携式应用程序,所以为了他的缘故,我在其中编写代码并复制粘贴到JGrasp中。特别是如果它在4:30之前到达-哈哈,作业截止时间在哪个时区?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;
public class Project8 extends JFrame
{
private JTextField numGuessFld;
private JButton guessBtn, guessAgainBtn, playAgainBtn;
private int randNum;
private Container c = getContentPane();
private int numGuessed;
private Random rn = new Random();
public static void main(String[] args)
{
Project8 frm = new Project8();
frm.setSize(400,150);
frm.setVisible(true);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}//end main
public Project8()
{
c.setLayout(new FlowLayout());
setTitle("Number Guessing Game");
JLabel gameDescriptLbl = new JLabel("I have a number between 1 and 1000. Can you guess my number?");
c.add(gameDescriptLbl);
JLabel numGuessLbl = new JLabel("Please enter your first guess. ");
c.add(numGuessLbl);
numGuessFld = new JTextField(4);
c.add(numGuessFld);
guessBtn = new JButton("Guess");
c.add(guessBtn);
guessAgainBtn = new JButton("Guess Again");
guessAgainBtn.setEnabled(false);
c.add(guessAgainBtn);
playAgainBtn = new JButton("Play Again?");
playAgainBtn.setEnabled(false);
c.add(playAgainBtn);
JLabel guessResult = new JLabel("");
c.add(guessResult);
Handler handler = new Handler();
numGuessFld.addActionListener(handler);
guessBtn.addActionListener(handler);
guessAgainBtn.addActionListener(handler);
playAgainBtn.addActionListener(handler);
randNum = rn.nextInt(1000)+1;
}//end constructor Project8
private class Handler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == guessBtn)
{
String input = numGuessFld.getText();
numGuessed = Integer.parseInt(input);
System.out.println(numGuessed);
System.out.println(randNum);
if (numGuessed < randNum)
{
c.setBackground(Color.blue);
guessResult.setText("Too low!");
guessAgainBtn.setEnabled(true);
}
else if (numGuessed > randNum)
{
c.setBackground(Color.red);
guessResult.setText("Too high!");
guessAgainBtn.setEnabled(true);
}
else if (numGuessed == randNum)
{
c.setBackground(Color.yellow);
guessResult.setText("Correct!");
guessAgainBtn.setEnabled(false);
guessBtn.setEnabled(false);
numGuessFld.setBackground(Color.green);
numGuessFld.setEditable(false);
playAgainBtn.setEnabled(true);
}
}//end guessBtn if
if (e.getSource() == guessAgainBtn)
{
numGuessFld.setText("");
}//end guessAgainBtn if
if (e.getSource() == playAgainBtn)
{
c.setBackground(null);
numGuessFld.setText("");
guessAgainBtn.setEnabled(false);
guessBtn.setEnabled(true);
numGuessFld.setBackground(null);
numGuessFld.setEditable(true);
playAgainBtn.setEnabled(false);
randNum = rn.nextInt(1000)+1;
}//end playAgainBtn if
}//end ActionPerformed
}//end Handler
}//end Project8