El NullPointer en tu caso quiere decir que botones[i] es null. Al crear el array de botones, estás creando "hueco" para 27 botones, pero no los botones en sí. Estos tienes que crearlos uno a uno en un bucle
Código java:
Ver originalfor (int i=0; i<27; ++i) {
botones[i].addMouseListener(this);//this es un JFrame
}
Se bueno.