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…