Bom pessoal to criando um programa onde ele precisa simular um desk tipo tem os ícones com as imagens e quando clica abre algo, só que para essa simulação eu pensei em criar em um loop e adicionar as labels com as imagens dentro de um array, só que eu preciso saber se quando eu clico tem como o getSource do mouseListener ou do Action retornar o numero do indice da lista e não o label pois o label é sempre o mesma para entender melhor segue o codigo: OBS os argumentos que algumas classes deviam receber não estão prontos pois vem direto de um banco de dados, então se puderem não focar em falar que esta com erro na passagem de parâmetros pois é uma classe sendo desenvolvida a espera de outra que esta em desenvolvimento por mim mesmo HAHAHA
/**
* Classe responsavel por simular um desktop de livros
*/
package nons.FantasyBook.Gui;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.util.*;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.*;
public class FantasyDesk
{
JPanel pnlDesk,pnlLivro;
static int contCapa = 0,contDesc = 0;
JLabel lblCapa,lblDesc;
LinkedList<Integer> id_Livro[];
static LinkedList<JLabel> lblCapas, lblDescs;
public void FantasyDesk()
{
pnlDesk = new JPanel();
pnlDesk.setLayout(new FlowLayout());
lblCapas = new LinkedList();
lblDescs = new LinkedList();
Capa();
Desc();
Livro();
}
/**
* Metodo responsavel por gerar a capa
* @param img
* img é uma lista de camilhos das imagens
* ele cria apenas 3 capas de cada vez
*/
public void Capa()
{
// só no momento logo apago isso !
}
public void Capa(File img[])
{
for(int c = 0;c < 3;c++)
{
lblCapa = new JLabel();
try
{
BufferedImage buffer = ImageIO.read(img[contCapa]);
ImageIcon imgCapa = new ImageIcon(buffer);
imgCapa = new ImageIcon(imgCapa.getImage().getScaledInstance(140, 200, Image.SCALE_DEFAULT));
lblCapa.setIcon(imgCapa);
contCapa ++;//metodo para mudar as imagens que estão sendo mostrada, criar o que volta com contCapa--
lblCapas.add(lblCapa);// depois criar o metodo set
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
/**
* Desc cria a descrição de cada livro
* @param desc
* desc recebe uma lista de String com as descriçoes, lembrando que o indice do desc deve ser igual ao da img
* para poderem pegar o mesmo livro
*/
public void Desc(String desc[])
{
for(int c = 0; c < 3;c++)
{
lblDesc = new JLabel();
lblDesc.setFont(new Font("Arial",Font.PLAIN,14));
lblDesc.setForeground(new Color(255,255,255));
lblDesc.setText(desc[contDesc]);
contDesc++;//metodo para mudar as imagens que estão sendo mostrada, criar o que volta com contDesc--
lblDescs.add(lblDesc);//Criar metodo set
}
}
public void Desc()
{
// só no momento logo apago isso !
}
/**
* Livro responsavel por criar paineis para cada livro
*/
public void Livro()
{
for(int c = 0; c < 3;c++)
{
pnlLivro = new JPanel();
pnlLivro.setLayout(new GridLayout(2,1));
pnlLivro.setBackground(new Color(185,185,185,150));
pnlLivro.addMouseListener(new MouseAdapter()
{
@Override
public void mousePressed(MouseEvent e)
{
if(e.getButton() != 1)
{
menu.show(e.getComponent(),e.getX(),e.getY());
//aqui eu precisaria adicionar um getSource para ver de onde vei o click e que pegar o numero do indice do array
}
}
});
pnlLivro.add(lblCapas.get(contCapa));
pnlLivro.add(lblDescs.get(contDesc));
pnlDesk.add(pnlLivro);
}
}
JMenuBar menuBar;
JPopupMenu menu;
JMenuItem mnFavoritos, mnExcluir;
int id;
public void MenuOpc()
{
menuBar = new JMenuBar();
menu = new JPopupMenu();
mnFavoritos = new JMenuItem();
mnFavoritos.setForeground(new Color(255,255,255));
mnFavoritos.setText("Favoritos");
mnFavoritos.setToolTipText("Adicione aos Favoritos");
mnFavoritos.setBackground(new Color(185,185,185));
mnFavoritos.setContentAreaFilled(false);
mnFavoritos.setBorderPainted(false);
mnFavoritos.setFocusPainted(false);
mnFavoritos.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
//aqui eu precisaria receber o indice do array,mas para isso preciso descobrir com pegar
}
});
menu.add(mnFavoritos);
mnExcluir = new JMenuItem();
mnExcluir.setForeground(new Color(255,255,255));
mnExcluir.setText("Excluir");
mnExcluir.setToolTipText("Excluir Historia");
mnExcluir.setBackground(new Color(185,185,185));
mnExcluir.setContentAreaFilled(false);
mnExcluir.setBorderPainted(false);
mnExcluir.setFocusPainted(false);
mnExcluir.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
//aqui eu precisaria receber o indice do array,mas para isso preciso descobrir com pegar
}
});
menu.add(mnExcluir);
}
}
Obs² não liguem para alguns comentarias que vcs acharem que não fazem sentido para o post, são apenas lembretes para mim mesmo