-2

For some reason my calculator program isn't working. Just to be clear, it's a modified calculator that I'm making to multiply the two digits that the user clicks on together, and display the answer when clicking on the little "Calculate" button. The error is that the ints I'm trying to use from when the user clicks the buttons aren't being used. For some reason, it says that hour and ig are unresolved, but I declared them above... any solutions would be helpful! Here's my code:

package Calculator;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class Frame1 {

private JFrame frmIronGolemSpawner;
private JTextField txtHours;
private JTextField txtIronGolemSpawners;
private JButton button;
private JButton button_1;
private JButton button_2;
private JButton button_3;
private JButton button_4;
private JButton button_5;
private JButton button_6;
private JButton button_7;
private JButton button_8;
private JButton button_9;
private JButton button_10;
private JButton button_11;
private JButton button_12;
private JButton button_13;
private JButton button_14;
private JButton button_15;
private JButton button_16;
private JButton button_17;
private JButton button_18;
private JButton button_19;
private JButton button_20;
private JButton button_21;
private JButton button_22;
private JButton button_23;
private JButton button_24;
private JButton button_25;
private JButton button_26;
private JButton button_27;
private JButton button_28;
private JButton button_29;
private JButton button_30;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Frame1 window = new Frame1();
                window.frmIronGolemSpawner.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the application.
 */
public Frame1() {
    initialize();
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    frmIronGolemSpawner = new JFrame();
    frmIronGolemSpawner.setTitle("Iron Golem Spawner Calculator");
    frmIronGolemSpawner.setBounds(200, 200, 900, 600);
    frmIronGolemSpawner.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frmIronGolemSpawner.getContentPane().setLayout(null);

    txtHours = new JTextField();
    txtHours.setEditable(false);
    txtHours.setFont(new Font("Tahoma", Font.BOLD, 26));
    txtHours.setText("Hours      Days(1, 2, 3, 4, 5, 6, 7, 14, 21)  Weeks of sleep (1, 2, 4)");
    txtHours.setBounds(0, 0, 885, 61);
    frmIronGolemSpawner.getContentPane().add(txtHours);
    txtHours.setColumns(10);

    txtIronGolemSpawners = new JTextField();
    txtIronGolemSpawners.setEditable(false);
    txtIronGolemSpawners.setText("Iron Golem Spawners");
    txtIronGolemSpawners.setFont(new Font("Tahoma", Font.BOLD, 26));
    txtIronGolemSpawners.setColumns(10);
    txtIronGolemSpawners.setBounds(0, 266, 781, 68);
    frmIronGolemSpawner.getContentPane().add(txtIronGolemSpawners);

    JButton btnNewButton = new JButton("1");
    btnNewButton.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {

        }
    });
    btnNewButton.setBounds(0, 59, 57, 220);
    frmIronGolemSpawner.getContentPane().add(btnNewButton);

    button = new JButton("3");
    button.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int hour = 3;
        }
    });
    button.setBounds(55, 59, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button);

    button_1 = new JButton("6");
    button_1.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int hour = 6;
        }
    });
    button_1.setBounds(111, 59, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_1);

    button_2 = new JButton("9");
    button_2.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int hour = 9;
        }
    });
    button_2.setBounds(166, 59, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_2);

    button_3 = new JButton("24");
    button_3.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int hour = 24;
        }
    });
    button_3.setBounds(222, 59, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_3);

    button_4 = new JButton("48");
    button_4.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int hour = 48;
        }
    });
    button_4.setBounds(279, 59, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_4);

    button_5 = new JButton("72");
    button_5.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int hour = 72;
        }
    });
    button_5.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
        }
    });
    button_5.setBounds(334, 59, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_5);

    button_6 = new JButton("96");
    button_6.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int hour = 96;
        }
    });
    button_6.setBounds(390, 59, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_6);

    button_7 = new JButton("120");
    button_7.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int hour = 120;
        }
    });
    button_7.setBounds(445, 59, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_7);

    button_8 = new JButton("144");
    button_8.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int hour = 144;
        }
    });
    button_8.setBounds(501, 59, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_8);

    button_9 = new JButton("168");
    button_9.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int hour = 168;
        }
    });
    button_9.setBounds(558, 59, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_9);

    button_10 = new JButton("336");
    button_10.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent arg0) {
             int hour = 336;
        }
    });
    button_10.setBounds(613, 59, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_10);

    button_11 = new JButton("672");
    button_11.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int hour = 672;
        }
    });
    button_11.setBounds(669, 59, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_11);

    button_12 = new JButton("63");
    button_12.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int hour = 63;
        }
    });
    button_12.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
        }
    });
    button_12.setBounds(724, 59, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_12);

    button_13 = new JButton("126");
    button_13.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int hour = 126;
        }
    });
    button_13.setBounds(780, 59, 57, 208);
    frmIronGolemSpawner.getContentPane().add(button_13);

    button_14 = new JButton("252");
    button_14.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int hour = 252;
        }
    });
    button_14.setBounds(838, 59, 57, 208);
    frmIronGolemSpawner.getContentPane().add(button_14);

    button_15 = new JButton("1");
    button_15.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int ig = 1;
        }
    });
    button_15.setBounds(0, 333, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_15);

    button_16 = new JButton("2");
    button_16.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int ig = 2;
        }
    });
    button_16.setBounds(55, 333, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_16);

    button_17 = new JButton("3");
    button_17.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int ig = 3;
        }
    });
    button_17.setBounds(111, 333, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_17);

    button_18 = new JButton("4");
    button_18.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int ig = 4;
        }
    });
    button_18.setBounds(166, 333, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_18);

    button_19 = new JButton("5");
    button_19.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int ig = 5;
        }
    });
    button_19.setBounds(222, 333, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_19);

    button_20 = new JButton("6");
    button_20.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int ig = 6;
        }
    });
    button_20.setBounds(279, 333, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_20);

    button_21 = new JButton("7");
    button_21.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int ig = 7;
        }
    });
    button_21.setBounds(334, 333, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_21);

    button_22 = new JButton("8");
    button_22.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int ig = 8;
        }
    });
    button_22.setBounds(390, 333, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_22);

    button_23 = new JButton("9");
    button_23.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int ig = 9;
        }
    });
    button_23.setBounds(445, 333, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_23);

    button_24 = new JButton("10");
    button_24.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int ig = 10;
        }
    });
    button_24.setBounds(501, 333, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_24);

    button_25 = new JButton("11");
    button_25.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int ig = 11;
        }
    });
    button_25.setBounds(558, 333, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_25);

    button_26 = new JButton("12");
    button_26.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int ig = 12;
        }
    });
    button_26.setBounds(613, 333, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_26);

    button_27 = new JButton("14");
    button_27.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int ig = 14;
        }
    });
    button_27.setBounds(669, 333, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_27);

    button_28 = new JButton("16");
    button_28.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int ig = 16;
        }
    });
    button_28.setBounds(724, 333, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_28);

    button_29 = new JButton("32");
    button_29.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int ig = 32;
        }
    });
    button_29.setBounds(780, 333, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_29);

    button_30 = new JButton("64");
    button_30.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
             int ig = 64;
        }
    });
    button_30.setBounds(828, 333, 57, 220);
    frmIronGolemSpawner.getContentPane().add(button_30);

    JButton btnCalculate = new JButton("Calculate");
    btnCalculate.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent arg0) {
            int answer;
             answer = hour * ig * 6000;
                JOptionPane.showMessageDialog(null, answer);
        }
    });
    btnCalculate.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
        }
    });
    btnCalculate.setBounds(780, 266, 110, 68);
    frmIronGolemSpawner.getContentPane().add(btnCalculate);

}
}
MadProgrammer
  • 343,457
  • 22
  • 230
  • 366
Usa Peppy
  • 7
  • 6
  • You haven't declared the variables hour and ig in the line below: answer = hour * ig * 6000; – Perdomoff Dec 13 '15 at 06:18
  • So how would I declare that while still keeping the values from the variables above? I'm trying to get it to use the hour and ig variables from the jbuttons, so would I do something like make them private? When you click on one of the upper jbuttons, for example, it would set that int to whatever I had it set in the jbutton, then you would select one from below and it would set the other int, so you could multiply those together. Is there a way to do it more conventionally, or something? – Usa Peppy Dec 13 '15 at 06:36
  • You could declare them inside the mouseclick event – Perdomoff Dec 13 '15 at 06:39
  • The thing is, I thought I had already done that... ( int hour = 63;) could you tell me how to declare them inside of the mouseclick event? – Usa Peppy Dec 13 '15 at 06:42
  • Where do those values come from, what are they supposed to be? – Perdomoff Dec 13 '15 at 06:45
  • (Also, I'm pretty new to Java and JFrame, so sorry if I sound like... well... a newbie...) – Usa Peppy Dec 13 '15 at 06:46
  • Oh. The values come from when a user clicks on one of the buttons. – Usa Peppy Dec 13 '15 at 06:46
  • They represent items in a game. Trying to make something to make calculating easier for a specific feature of the game, that's why the calculator looks so weird. – Usa Peppy Dec 13 '15 at 06:47
  • In this case, the jbuttons aren't setting the values, what are they supposed to be or where should they come from? – Perdomoff Dec 13 '15 at 07:09
  • They're supposed to be buttons that when pressed, set values. How could I have the jbuttons set values? – Usa Peppy Dec 13 '15 at 07:10
  • Instead of using a GUI builder, you should learn to write the GUI yourself. It's not that hard and you would be able to solve most of your problems yourself because you actually wrote it. – user1803551 Dec 13 '15 at 07:53
  • @user1803551 Okay. That sounds good. (I was actually looking up tutorials on how to do that but got dragged into the other tool...) But I kind of want to finish this one, because it's so close to being a usable... thing. (Also, do you have a good place to watch/read tutorials on JFrame? I couldn't find many, most were in net bean, and I use eclipse. [When I searched eclipse it pulled up the tool thing...]) – Usa Peppy Dec 13 '15 at 07:57
  • [Here](http://docs.oracle.com/javase/tutorial/uiswing/index.html) are the Swing tutorials. – user1803551 Dec 13 '15 at 08:27

1 Answers1

2

Your problem has to do with a concept called scope.

int ig and int hour are defined inside the mouseClicked of an anonymous MouseAdapter class:

button_30.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent e) {
         int ig = 64;
    }
});

But when you try to access them in

btnCalculate.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent arg0) {
        int answer;
        answer = hour * ig * 6000;
        JOptionPane.showMessageDialog(null, answer);
    }
});

hour and ig are not defined in this scope. Here is an answer I gave on the concept of scope, but you can easily Google for more info on it.

To solve your problem, you can just define them as fields:

public class Frame1 {

private int hour, ig;
private JFrame frmIronGolemSpawner;
private JTextField txtHours;
private JTextField txtIronGolemSpawners;

and inside the mouse listeners use ig = ... instead of int ig = ... and the same for hour.

Community
  • 1
  • 1
user1803551
  • 12,965
  • 5
  • 47
  • 74