I'm trying to get a head start on something I will be working on next semester. Its basically a template of a cell phone, consisting of a JTextField that displays the buttons pressed. My problem is when making my actionlistener, the JTextField (named "numIn") is not being recognized, getting an error saying it cannot be resolved. Here is the code for the way I have my JPanel of the phone set up:
public class Template
{
// the dial pad button strings
private static final String[][] BUTTONSTRINGS =
{
{"1", "2", "3"},
{"4", "5", "6"},
{"7", "8", "9"},
{"*", "0", "#"}
};
private static final Dimension JUNK_SIZE = new Dimension(200, 160);
private JPanel mainPanel = new JPanel();
public Template()
{
JTextField numIn = new JTextField("Enter Phone Number");
JTextField numDisplay = new JTextField("PhoneNumber");
JPanel otherJunkPanel = new JPanel();
otherJunkPanel.add(numDisplay);
otherJunkPanel.add(numIn);
otherJunkPanel.add(new JButton("Send"));
otherJunkPanel.setPreferredSize(JUNK_SIZE);
JPanel dialPadPanel = new JPanel(new GridLayout(0, 3));
Here is the two action listeners made, one for the numbers, one for the non numbers:
// action listener for the number buttons only
NumberButtonListener numberBtnListener = new NumberButtonListener();
// listener for other buttons
NonNumberButtonListener nonNumberBtnListener = new NonNumberButtonListener();
for (int i = 0; i < BUTTONSTRINGS.length; i++)
{
for (int j = 0; j < BUTTONSTRINGS[i].length; j++)
{
String btnString = BUTTONSTRINGS[i][j]; // get the button string from array
JButton btn = new JButton(btnString); // use it to make button
// if a number button, add the number button's listener
if ("012345679".contains(btnString))
{
btn.addActionListener(numberBtnListener);
}
else
{
btn.addActionListener(nonNumberBtnListener);
}
and here is where i get my error, when i tell the action listener to display the button at the JTextField named "numIn", numIn is not recognized:
private class NumberButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String buttonPressedString = e.getActionCommand();
numIn.setText("Number Button Pressed: " + buttonPressedString);
// TODO finish
}
}
I am not very strong in coding, as its not my major, so I appreciate any help possible. I should have probably prefaced that much of this code has been frankenstiend from bits and pieces of labs I have done in the past. Thanks!
Your numIn is a local variable on the constructor.
You should declare it as a class variable if you want to use it on other methods. (or pass it by argument for methods)