user3029599
user3029599

Reputation: 3

Cannot find symbol in Java. [Compiler error]

SlotMachine.java:76: cannot find symbol
symbol  : variable slot
location: class MyFrame.pullHandler

Code

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;

class SlotMachine
{
    public static void main(String [] args)
    { 
       MyFrame f = new MyFrame();
    }
}

class MyFrame extends JFrame
{
    JTextField r1 = new JTextField("---",10);
    JTextField r2 = new JTextField("---",10);
    JTextField r3 = new JTextField("---",10);



    JButton pull = new JButton("Pull");
    JLabel result = new JLabel("Not Played Yet");

public MyFrame()
{   

  JTextField [] slot = new JTextField[3];
  slot[0] = new JTextField("---",10);
  slot[1] = new JTextField("---",10);
  slot[2] = new JTextField("---",10);

    JPanel panel = new JPanel();
    setVisible(true);
    setSize(400, 400);  //replace with pack();?
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setTitle("Slot Machine - By: ");

    add(panel);
    panel.add(slot[0]);
    panel.add(slot[1]);
    panel.add(slot[2]);
    panel.add(pull);
    panel.add(result);

    pull.addActionListener(new pullHandler());

}

class pullHandler implements ActionListener
{
    public void actionPerformed(ActionEvent pull)
    {
        int ban = 0;
        int cher = 0; 
        int mel = 0;
        int plays = 0;

        for(int count=0; count< 3; count++) //repeats three times, giving three random values
        {
            Random rand = new Random(); 
            int numRoll = rand.nextInt(3);  //0,1,2 values



        if  (numRoll==0)
            {
                //Bannana
                slot[0].setBackground(Color.yellow);    //I want to replace the 1 with the counts, so if it is the second loop, it would set it for the second box.
                ban++;
                /*slot[count]*/r1.setText("Banana");        
            }

            if (numRoll==1)
            {   
                //cherry
                r2.setBackground(Color.red);
                cher++;
                r2.setText("Cherry");
            }

            if (numRoll==2)
            {
                //Melon
                r3.setBackground(Color.green);
                mel++;
                r3.setText("Melon");  
            }
        }

        plays++;
        result.setText("Played " + plays);  //why don't I keep getting new values when I click "Pull"?

    }
}



}

I'm trying to use the slot[] array instead of r1/r2/r3 in my pullhandler class. I tried reading through old posts, but could not find anything that was quite like my problem.

Upvotes: 0

Views: 699

Answers (2)

iWumbo
iWumbo

Reputation: 135

JTextField [] slot = new JTextField[3]; should be created outside MyFrame() constructor

To make it available to pullHandler you should also try making slot as static

Upvotes: 0

Makoto
Makoto

Reputation: 106389

Outside of the scope of the constructor, the variable slot has no meaning. If you want it to be accessed in other methods, move slot to the field level, with the JTextField variables.

Upvotes: 1

Related Questions