gpt4 book ai didi

java - JLabel 在 ActionListener 中没有被正确识别

转载 作者:行者123 更新时间:2023-11-29 06:06:37 26 4
gpt4 key购买 nike

我问这个是最后的手段,因为我找不到任何关于我在这个随机数游戏中遇到的问题的帮助。

问题是,当我尝试运行该程序时,ActionListener 中出现错误,提示“无法解析 guessResult”。

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

任何帮助将不胜感激......特别是如果它在 4:30 之前到达:) 谢谢!

最佳答案

您遇到范围界定问题。尝试将 guessResult 设为成员变量,而不是局部变量

关于java - JLabel 在 ActionListener 中没有被正确识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8347367/

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