Wie entferne ich einen Aktionslistener?

Also mache ich ein Schachspiel, aber nur mit dem Ritter.

Dies ist die Methode, um den Ritter zu bewegen

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);

    }
}

Mein Problem ist, dass wenn ich das Teil bewege, wenn zum ersten Mal neue Ritter auftauchen, ich es vorher hätte bewegen können. Also dachte ich mir, wenn ich den Actionlistener innerhalb der Action Perform Methode entferne, könnte ich das beheben. Was denkst du? Ich bin neu in Java, sorry, wenn dies eine dumme Frage ist

Antworten auf die Frage(1)

Ihre Antwort auf die Frage