Retorno de index de um componenete a partir do Click do mouse

e aih glra? tudo blz?..mas uma vez eu precisando da ajuda de vcs…é o seguinte estou desenvolvendo uma aplicação e nesta , sempre que eu clico em um botao cria-se um jPanel com uma imagem e um label, eu implementei o evento de click do mouse para que sempre que eu clicar em algum dos jpanels criados eu poder editar o label do mesmo…so que ao clicar em qq dos jpainels, semrpe é retornado o index do
último painel, estou armazendo todos esses componenetes em um arraylist…então queria saber como faço para retornar a posição do painel no Arraylist qd eu clicar no painel criado anteriormente, independente do número de panels criados…Ou seja, eu apertei 10 vezes o botão (criaram se 10 panels), logo qd eu clicar no panel de n° 7 ele retornar 6 (já que as posições no array vão de 0 a 9)…
tem como fazer isso? agradeço qq ajuda…

abraço

acho q seria bom vc criar uma classe Painel q extende JPanel e implementa um actionListener…
onde nele vai abrigar o index do painel… (incluindo imagem e texto)

lah vc poem o metodo actionEvent
q qdo o componente JPanel for clicado…
exibir um JOptionPane.showMessageDialog()
com o index dentro

seria isso?

hum…vou tentar fazer como vc está propondo…mas dexa eu ser mais específico e dizer de fato o que eu fiz:

aih vai mais ou menos o meu codigo: (esse é o codigo correspondente ao click do botão)

//fora do botão
MinhaClasse minhaClasse;
ArrayList lista=new ArrayList();
//sendo minha classe onde eu armazeno o panel e o label;

//Código do botão

  JPanel panel= new JPanel():
  ImageIcon image = new ImageIcon("C:/...");
  JLabel label = new JLabel (ImageIcon);
 
  minhaClasse=new MinhaClasse(painel, label);
  lista.add(minhaClasse);

// click do maouse

 panel.addMouseListener (new MouseAdapter()){

     public void mouseClicked (MouseEvent e){


  int index=lista.indexof("panel clicado");

//mostra o index do panel clicado
System.out.println (index);

… mas não sei como fazer com que o click captura e imprima o index do painel que foi clicado.

=/

algum help?

o que

eu achei meio confuso o seu codigo auehuaeh

eu faria algo assim…

Classe Principal{
 ArrayList <MeuPanel>  panel   // seus JPanels
 JButton criar   // o botao q faz vc criar JPanels

 criar.addActionListener... bla bla bla...{
      panel.add( new MeuPanel( index, imagem, texto)   );
        // se nao precisar passar imagem e texto... pode usar um construtor de  new MeuPanel(index);
     
       insere o MeuPanel na tela...
  }

} // fim Principal


Classe MeuPanel extends JPanel implements ActionListener{
   int index; 
   MeuPanel ( index,  imagem, texto ){
        this.index = index;
          etc...
  }

  // entao por implementar um ActionListener... 
  // vc vai ter q obrigatoriamente colocar o eventListener dele..
  // e dentro dele... vai vai por...
  JOptionPane.showMessageDialog( index, etc..) ;
  // ou
  System.out.println( index );
}

}

no caso… o actionListener… vai ser MouseListener =P
troca no codigo

eu tentendi o que vc fez…ams o principal que de fato é minha dúvida não ocnsegui entender…onde vc pega o index do panel que foi clicado?

eu iria setar o index no momento q o MeuPanel for criado…

por ser um arraylist…
basta vc dar (de acordo com o meu exemplo)… um panel.size();
q ele retorna o tamanho do array…

para saber o index… subtraia 1…

um Array com 5 itens… será size 5… e index de 0 a 4…

entende?

nao sei se estou sendo claro…

mas…

panel.size() … retorna 0…

ai eu do um panel.add( new MeuPanel( panel.size() ) );
ele vai ter um MeuPanel com index 0… (jah q o panel.size() retornou 0 no momento do add)…

fazendo novamente…

panel.size()… retorna 1…

ai eu do um panel.add( new MeuPanel( panel.size() ) );

vai ter um MeuPanel… com index 1 setado…

e por ai vai

entendi sim…mas tipow…se eu criei 10 panels… e cliclei no 6°… como faço pra mostrar “6”?..

dentro da classe…
vc esta setando uma variavel INDEX na hora de construir !!

entao com o metodo sendo chamado na hora de clicar…
a função System.out.println(index) da classe… vai imprimir o index dela…

nao sei se posso ser mais claro heheh…
esta no codigo a resposta jah… tenta fazer =)

no caso…

clicando no 6… ele vai mostrar “5”…

entao se vc kizer pegar o “numero” (de 1 a 10) dele… e não o Index (0 a 9)…
basta somar 1 na saida…

valeu aih pela ajuda…sou novo na programação em java…desculpa a insistencia …

brigadão aew!!!

Caraca alucardeck , apenas pra agradecer pela ajuda…funfou legal cara…