Hey guys I hate to bother you with this, but I'm having a problem with creating an arrayList of JButtons that will end up using an actionlistener. My original program was this:
I want to simplify the keypad buttons using an ArrayList. My original inclination was to do it in a manner such as:
But for some reason or another, the ActionListener will not work with my program this way. So I was curious to see if you guys could offer me any advice on this, I'd greatly appreciate it.
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class KeyBorderPanel extends JPanel
{
private JLabel resultLabel;
private JButton one, two, three, four, five, six, seven, eight, nine, pound, zero, star, clear;
private JPanel keyPanel, resultPanel, clearPanel;
private String result;
public KeyBorderPanel()
{
JFrame frame = new JFrame ("KeyPad");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout (new BorderLayout());
panel.setBackground (Color.green);
JPanel resultPanel = new JPanel();
resultPanel.setBorder(BorderFactory.createLineBorder (Color.blue, 2));
resultLabel = new JLabel (result);
KeyListener listener = new KeyListener();
resultPanel.add (resultLabel);
panel.add (resultPanel);
JPanel keyPanel = new JPanel();
keyPanel.setLayout (new GridLayout (4, 3));
keyPanel.setBorder(BorderFactory.createLineBorder (Color.blue, 2));
one = new JButton ("1");
two = new JButton ("2");
three = new JButton ("3");
four = new JButton ("4");
five = new JButton ("5");
six = new JButton ("6");
seven = new JButton ("7");
eight = new JButton ("8");
nine = new JButton ("9");
pound = new JButton ("#");
zero = new JButton ("0");
star = new JButton ("*");
keyPanel.add (one);
keyPanel.add (two);
keyPanel.add (three);
keyPanel.add (four);
keyPanel.add (five);
keyPanel.add (six);
keyPanel.add (seven);
keyPanel.add (eight);
keyPanel.add (nine);
keyPanel.add (pound);
keyPanel.add (zero);
keyPanel.add (star);
panel.add (keyPanel);
JPanel clearPanel = new JPanel();
clearPanel.setBorder(BorderFactory.createLineBorder (Color.blue, 2));
clear = new JButton("Clear");
clear.addActionListener (new ButtonListener());
clear.addActionListener (listener);
clearPanel.add (clear);
panel.add (clearPanel);
one.addActionListener (listener);
two.addActionListener (listener);
three.addActionListener (listener);
four.addActionListener (listener);
five.addActionListener (listener);
six.addActionListener (listener);
seven.addActionListener (listener);
eight.addActionListener (listener);
nine.addActionListener (listener);
pound.addActionListener (listener);
zero.addActionListener (listener);
star.addActionListener (listener);
panel.add (resultPanel, BorderLayout.NORTH);
panel.add (keyPanel, BorderLayout.CENTER);
panel.add (clearPanel, BorderLayout.EAST);
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
private class KeyListener implements ActionListener
{
public void actionPerformed (ActionEvent event)
{
if (event.getSource() == one)
resultLabel.setText("1");
if (event.getSource() == two)
resultLabel.setText("2");
if (event.getSource() == three)
resultLabel.setText("3");
if (event.getSource() == four)
resultLabel.setText("4");
if (event.getSource() == five)
resultLabel.setText("5");
if (event.getSource() == six)
resultLabel.setText("6");
if (event.getSource() == seven)
resultLabel.setText("7");
if (event.getSource() == eight)
resultLabel.setText("8");
if (event.getSource() == nine)
resultLabel.setText("9");
if (event.getSource() == pound)
resultLabel.setText("#");
if (event.getSource() == zero)
resultLabel.setText("0");
if (event.getSource() == star)
resultLabel.setText("*");
}
}
private class ButtonListener implements ActionListener
{
public void actionPerformed (ActionEvent event)
{
if (event.getSource() == clear)
resultLabel.setText(" ");
}
}
}
Code:
import java.util.ArrayList;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class KeyBorderPanel2 extends JPanel
{
private JLabel resultLabel;
private JPanel keyPanel, resultPanel, clearPanel;
private JButton clear;
private String result;
private ArrayList<JButton> keypadList;
private String[] buttons = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "pound", "star"};
public KeyBorderPanel2()
{
KeyListener listener = new KeyListener();
keypadList = new ArrayList<JButton>();
for (int i = 0; i < buttons.length; i++)
{
keypadList.add (new JButton(buttons[i]));
keypadList.add(ActionListener(listener));
}
//......
Comment