Retorno de index de um componenete a partir do Click do mouse
11 respostas
F
flaryon
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…
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?
F
flaryon
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ãoMinhaClasseminhaClasse;ArrayListlista=newArrayList();//sendo minha classe onde eu armazeno o panel e o label;
//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
alucardeck
eu achei meio confuso o seu codigo auehuaeh
eu faria algo assim…
ClassePrincipal{ArrayList<MeuPanel>panel// seus JPanelsJButtoncriar// o botao q faz vc criar JPanelscriar.addActionListener...blablabla...{panel.add(newMeuPanel(index,imagem,texto));// se nao precisar passar imagem e texto... pode usar um construtor de new MeuPanel(index);insereoMeuPanelnatela...}}// fim PrincipalClasseMeuPanelextendsJPanelimplementsActionListener{intindex;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..);// ouSystem.out.println(index);}}
no caso… o actionListener… vai ser MouseListener =P
troca no codigo
F
flaryon
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?
alucardeck
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?
alucardeck
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
F
flaryon
entendi sim…mas tipow…se eu criei 10 panels… e cliclei no 6°… como faço pra mostrar “6”?..
alucardeck
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 =)
alucardeck
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…
F
flaryon
valeu aih pela ajuda…sou novo na programação em java…desculpa a insistencia …
brigadão aew!!!
F
flaryon
Caraca alucardeck , apenas pra agradecer pela ajuda…funfou legal cara…