¿Cómo eliminar un oyente de acción?

Así que estoy haciendo un juego de ajedrez, pero solo con el caballero.

Este es el método para mover al caballero.

public void caballo(final int row, final int column) {

        final JButton current = mesa[row][column];

        current.setIcon(image);
        panel.repaint();

        acciones(row, column, current);
    }

    public void acciones(final int row, final int column, final JButton current) {

        for (int i = 0; i < HEIGHT; i++) {
            for (int j = 0; j < WIDTH; j++) {
                mesa[i][j].addActionListener(e(row, column, current));



            }
        }
    }

    public ActionListener e(final int row, final int column,
            final JButton current) {
        return new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                if (tienebotton(row + 2, column + 1)) {
                    if (e.getSource() == mesa[row + 2][column + 1]) {

                        current.setIcon(null);
                        caballo(row + 2, column + 1);
                        ((AbstractButton) e.getSource()).setEnabled(false);

                    }
                }
                if (tienebotton(row + 2, column - 1)) {
                    if (e.getSource() == mesa[row + 2][column - 1]) {

                        current.setIcon(null);
                        caballo(row + 2, column - 1);

                        ((AbstractButton) e.getSource()).setEnabled(false);

                    }
                }
                if (tienebotton(row - 2, column - 1)) {
                    if (e.getSource() == mesa[row - 2][column - 1]) {

                        current.setIcon(null);
                        caballo(row - 2, column - 1);

                        ((AbstractButton) e.getSource()).setEnabled(false);

                    }
                }
                if (tienebotton(row - 2, column + 1)) {
                    if (e.getSource() == mesa[row - 2][column + 1]) {

                        current.setIcon(null);
                        caballo(row - 2, column + 1);

                        ((AbstractButton) e.getSource()).setEnabled(false);

                    }
                }

                if (tienebotton(row + 1, column + 2)) {
                    if (e.getSource() == mesa[row + 1][column + 2]) {

                        current.setIcon(null);
                        caballo(row + 1, column + 2);

                        ((AbstractButton) e.getSource()).setEnabled(false);

                    }
                }
                if (tienebotton(row - 1, column + 2)) {
                    if (e.getSource() == mesa[row - 1][column + 2]) {

                        current.setIcon(null);
                        caballo(row - 1, column + 2);

                        ((AbstractButton) e.getSource()).setEnabled(false);

                    }
                }
                if (tienebotton(row + 1, column - 2)) {
                    if (e.getSource() == mesa[row + 1][column - 2]) {

                        current.setIcon(null);
                        caballo(row + 1, column - 2);

                        ((AbstractButton) e.getSource()).setEnabled(false);

                    }
                }
                if (tienebotton(row - 1, column - 2)) {
                    if (e.getSource() == mesa[row - 1][column - 2]) {

                        current.setIcon(null);
                        caballo(row - 1, column - 2);

                        ((AbstractButton) e.getSource()).setEnabled(false);

                    }
                }
            }
        };
    }

    public boolean tienebotton(int row, int column) {
        return (row >= 0 && row < HEIGHT && column >= 0 && column < WIDTH);

    }
}

Mi problema es que cuando muevo la pieza la primera vez que aparecen nuevos caballeros, podría haberla movido antes. Así que pensé que tal vez si elimino el Actionlistener dentro del método Action Perform, podría arreglar esto. ¿Qué piensas? Soy nuevo en Java, lo siento si esta es una pregunta estúpida

Respuestas a la pregunta(1)

Su respuesta a la pregunta