Removendo e devolvendo mouselisteners

1 resposta
Evy
ola pessoal... criei uma logica para remover e adicionar os mouselisteners de um vetor de labels...
JLabel label = new JLabel();  


        if (flag == false) {
            MouseMotionListener[] mm2 = sel.getMouseMotionListeners();
            MouseListener[] ml2 = sel.getMouseListeners();
            for (int y = 0; y < labels.size(); y++) {
                label = (JLabel) labels.elementAt(y);
                if (!(label.getName() .equals( sel.getName()))) {
                    for (int x = 0; x < ml2.length; x++) {
                        label.removeMouseMotionListener(mm2[x]);
                        label.removeMouseListener(ml2[x]);
                    }
                }
            }
        } else {
            for (int y = 0; y < labels.size(); y++) {
                label = (JLabel) labels.elementAt(y);
               if (label != sel) {
                    for (int x = 0; x < mm.length; x++) {
                        label.addMouseMotionListener(mm[x]);
                        label.addMouseListener(ml[x]);
                    }
                }
            }
        }
seria algo assim: eu removeria os listeners de todos os labels, menos o do selecionado... quando o label for o selecionado ele pode ser arrastado... e eu devolveria esses mouse listeners quando o usuario clicasse em um botao... mas nao sei porque... nao esta funcionando corretamente... coloquei uns "System.out", e parece q os labels estao recebendo os cliques normalmente... mas quando eu clico em outro label, a variavel selecionado nao recebe o label que eu criei... acho q ele continua sem o evento de click... alguem pode me ajudar a resolver este problema? obrigada

1 Resposta

brlima

Olha, não entendi nada do que vc quis fazer. Mas vou tentar…

Umas coisa: vc faz um looping numa lista e depois no MouseListeners, e remove os MouseListener e também os MouseMotion!! Tem q ter outro looping para remover o Motion!!..
Foi a unica falha que achei…
Isso em ambos os loopings…

Criado 25 de junho de 2008
Ultima resposta 27 de jun. de 2008
Respostas 1
Participantes 2