Java JLabel不是';无法在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

我问这是一个非常万不得已的办法,因为我一直无法找到任何关于这个随机数游戏的问题的帮助

问题是,当我试图运行程序时,ActionListener中有一个错误,它说“猜结果无法解决”

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