Si, hai ragione. Quando ho scritto il codice dovevo essere rapito da un alieno. E' evidente che la riga corretta era

p.add(b([j][i]);
e non

p.add(JButton([j][i]));
Per quanto riguarda l'ActionEvent, immagino che tu intenda un ActionListener. Secondo me ti conviene associare un ActionListener comune a tutti che distingue tra i vari JButton, altrimenti dovresti creare 100 oggetti ActionListener quando ne basta uno solo...

Puoi fare una cosa del tipo :

codice:
public class MyActionListener implements ActionListener {
	public void actionPerformed(ActionEvent ae) {
		JButton selected = (JButton) ae.getSource();
		// ora selected contiene il JButton che  stato selezionato. Per 
		// ogni JButton puoi fare quello che ti serve. Ad esempio:
		if (selected = b[0][0]) {
			System.out.println("Hai premuto il bottone 0,0");
		else if (selected = b[0][1]) {
			System.out.println("Premi di nuovo questo bottone e formatto tutto!");
		}
		// ecc... ecc...
}
}
e aggiungere fuori da ciclo for del codice precendente

codice:
ActionListener myone = new MyActionListener();
e dentro al ciclo

codice:
b.addActionListener(myone);
Come ti sembra ?