Evento do mouse

6 respostas
D

pessoal tenho uma jlist e queria fazer o seguinte, ao clicar com mouse em um objeto do jlist pegar o valor do objeto,mais só to conseguindo pegar o valor com os evento ao clicar em um botão.
uso netbeans,crie esse eventos emcima do jlist.alguém pode me dizer por que não funciona esses eventos?
se alguém pode me ajudar agradeço,
obrigado

//evendo do botão funciona
    private void bTEventoActionPerformed(java.awt.event.ActionEvent evt) {
       evento =(Evento)jLEvento.getSelectedValue();
    }

//nenhum desses eventos do mouse funciona.
 private void jLEventoMouseClicked(java.awt.event.MouseEvent evt) {
    	  evento =(Evento)jLEvento.getSelectedValue();
    	  System.out.println(" 1"+evento);
    }
    
    private void jLEventoMouseEntered(java.awt.event.MouseEvent evt) {
    	 evento =(Evento)jLEvento.getSelectedValue();
   	  System.out.println(" 3"+evento);
    
    }
    private void jLEventoMousePressed(java.awt.event.MouseEvent evt) {
    	  evento =(Evento)jLEvento.getSelectedValue();
    	  System.out.println(" 2"+evento);
    }

6 Respostas

Andre_Brito

Opa!
Cara, eu acho que você deve colocar um listener na JList e o evento ser um MouseEvent. Algo assim:

private void mouseClicadoNaLista(MouseEvent evento) {
    if(evento.getClickCount() == 1) {
        // faz alguma coisa;
    }
}

Veja aí se funciona e me responde.
Abraço.

[editado]
Eu não sei ao certo porque seus eventos não funcionam, mas eu arrisco dizer que são aqueles casts ali.
[/editado]

D

não consegui fazer,com listener,axo que não tem nada haver com os cast por que o evento do botão funciona.

private void jLEventoMouseClicked(java.awt.event.MouseEvent evt) {
    	  evento =(Evento)jLEvento.getSelectedValue();
    	  System.out.println(" 1"+evento);
    }
    
  public FrameParticipante(Usuario produtor) {
         this.produtor =produtor;
            jLEvento = new JList(produtor.getRegistroDeEvento().toArray());
           initComponents();
    }

	public void valueChanged(ListSelectionEvent e) {
		 JList list = (JList)e.getSource();
		
		 evento =(Evento)jLEvento.getSelectedValue();
	   	  System.out.println(" 4"+evento);
	   	  
	   	  jLEvento.addListSelectionListener(new FrameParticipante());
	}
Andre_Brito

Opa!
No método jLEventoMouseClicked, você quer ver em qual ele clicou? O que você quer exatamente?
O código que eu passei não resolve? Usei ele em um trabalho recentemente.

D

no método jLEventoMouseClicked eu quero jogar o valor clicado em um objeto,só não funcinou com o codigo que você passou.

D

pelo evento ActionPerformed ao clicar no botão funciona,só do mouse não.

Andre_Brito

Na verdade, o código que eu passei é o seu método jLEventoMouseClicked(…).
Faz assim:

private void jLEventoMouseClicked(java.awt.event.MouseEvent evt) {
    // Quando o mouse clicar uma vez, voce deve capturar no que ele clicou
    ObjetoDaLista objeto = (ObjetoDaLista) lista.getSelectedValue();
}

Agora, eu não sei que tipo de objeto você tem na lista. Supondo que seja um objeto do tipo String.

private void jLEventoMouseClicked(java.awt.event.MouseEvent evt) {
    String objeto = (String) lista.getSelectedValue();
    System.out.println("String selecionada = " + objeto);
}

É bom debugar pra ver se dá certo.
Tem a API, caso precise (estou indo dormir, mas amanhã vejo sua resposta).

http://java.sun.com/javase/6/docs/api/javax/swing/JList.html#getSelectedValue()

Outro site legal:
http://72.5.124.55/docs/books/tutorial/uiswing/components/list.html

Abraço.

Criado 3 de dezembro de 2008
Ultima resposta 4 de dez. de 2008
Respostas 6
Participantes 2