Your current ActionListener
has no context, it doesn't know what two values were used to generate the value you gave the button.
What you could do is create a ActionListener
which takes the values used to produce the button's text, this would then be capable of updating the label accordingly. For example...
public class MultiplerActionListener implements ActionListener {
private int[] values;
private JLabel label;
public MultiplerActionListener(JLabel label, int... valuesToMultiple) {
values = valuesToMultiple;
this.label = label;
}
@Override
public void actionPerformed(ActionEvent event) {
int answer = 1;
StringBuilder sb = new StringBuilder(64);
for (int value : values) {
if (sb.length() > 0) {
sb.append(" x ");
}
sb.append(value);
answer *= value;
}
sb.append(" = ");
sb.append(answer);
label.setText(sb.toString());
}
}
Then you would simply need to apply it when you create the buttons
for(int rowCounter = 1; rowCounter <= rowCount; rowCounter++) {
for(int colCounter = 1; colCounter <= colCount; colCounter++){
final JButton j = new JButton(Integer.toString(rowCounter * colCounter));
j.addActionListener(new MultiplerActionListener(countLabel, rowCounter, colCounter));
buttonPanel.add(j);
}
}