Então pessoal. O problema é o seguinte estou criando um gerenciador de Albuns e estou numa parte a qual nao consigo resolver. Assim o usuário seleciona uma imagem atráves do filechooser. E depois que ele seleciona a imagem. Eu pego o nome da imagem e atribuo a uma Lista de JMenuItem. Ou seja cada vez que ele pegar uma imagem , o nome da Imagem vai sendo colocado um embaixo do outro co0mo JMenusItens dentro de um JMenu. Até ai está fazendo porém eu preciso criar uma action para esse JMenuItens, na maneira de que se o usuário clicar no primeiro JMenuItem , ele irá abrir uma outra tela contendo a imagem correspondente. Porém estou meio perdido. Segue meu código para resolução . Desde ja agradeçio, preciso da resposta o mais breve possível.
package g4.albumDigital.igu;
import g4.albumDigital.logica.*;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Iterator;
import javax.imageio.ImageIO;
import javax.swing.GroupLayout.Alignment;
import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class TelaImagens extends JDialog implements ActionListener {
private static final long serialVersionUID = 4409915301083042110L;
JMenu menuOpções, menuTodasFotos;
JMenuBar jMenuBar;
JMenuItem itemInserir,itemDeletar;
JFileChooser chooser;
Album album;
public TelaImagens(Album a) {
setTitle(a.getTitulo());
this.album = a;
chooser = new JFileChooser();
setAparencia();
}
public void mostreJanela() {
setVisible(true);
setLocationRelativeTo(null);
}
public void setAparencia(){
jMenuBar = new JMenuBar();
setJMenuBar(jMenuBar);
setSize(480, 300);
//getContentPane().setBackground(Color.black);
menuOpções = new JMenu("Imagens");
jMenuBar.add(menuOpções);
itemInserir = new JMenuItem("Inserir");
itemInserir.setActionCommand(Opcao.INSERIR_IMAGEM.name());
menuOpções.add(itemInserir);
itemInserir.addActionListener(this);
itemDeletar= new JMenuItem("Deletar");
itemDeletar.setActionCommand(Opcao.DELETAR_IMAGEM.name());
menuOpções.add(itemDeletar);
itemDeletar.addActionListener(this);
menuTodasFotos= new JMenu("Fotos do Álbum");
jMenuBar.add(menuTodasFotos);
}
@Override
public void actionPerformed(ActionEvent e) {
Opcao opcao = Opcao.valueOf((e.getActionCommand()));
ArrayList<JMenuItem> itensFotos = new ArrayList<JMenuItem>();
File file = null;
try {
switch (opcao) {
case INSERIR_IMAGEM:
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
int res = chooser.showOpenDialog(null);
if (res == JFileChooser.APPROVE_OPTION) {
file = chooser.getSelectedFile();
JOptionPane.showMessageDialog(null,
"Arquivo escolhido com sucesso");
//Cria um MenuItem com o nome da Foto e adicona ao Array
itensFotos.add(new JMenuItem(file.getName()));
String local = JOptionPane.showInputDialog(null,
"Aonde foi o local desta foto?");
String pessoa = JOptionPane.showInputDialog(null,
"Com quem você(s) estava(m)?");
String evento = JOptionPane.showInputDialog(null,
"O que você(s) faziam lá?");
Imagem foto = new Imagem( local, pessoa, evento, file);
album.salvarImagem(foto);
for (JMenuItem jMenuItem : itensFotos) {
menuTodasFotos.add(jMenuItem);
jMenuItem.addActionListener(this);
// Não sei se está certo isso.
//Estou na dúvida por aqui, estou Adicionando um actionListener para cada MenuItem, mas estou confuso como criar essa action para abrir
//respectivamente cada imagem correspondente ao item do Menu, e também dentro dessa Action para abrir a imagem certa.
}
}
break;
case DELETAR_IMAGEM:
break;
}
} catch (Exception e2) {
JOptionPane.showMessageDialog(null,
"Ocorreu um erro durante o processamento");
}
}
}
Ou seja o problema é o seguinte criar um Action genérica que será chamada quando for clicado em qualquer um desses Itens de Menu que tem como nome , o nome da Imagem, e ao ser clicada qualquer item do Menu, chamar uma outra tela que terá a imagem correspondente á clicada. Segue imagem de exemplo.
[img]
http://img51.imageshack.us/img51/9586/imagensp.png
[/img]