Olá galera, ha muitos meses que venho acompanhando esse forum, ao qual consigo tirar muitas duvidas, mas desta vez não encontro solução possivel. Se puderem ajudar eu agradeço. O problema é o seguinte, preciso de criar uma interface grafica em que consiste em 2 botoes, um para adicionar imagens e outro para remove-las, um painel para mostrar a imagem, e outro painel para mostrar o endereço das imagens.
O que o programa tem que fazer é, ao clicar no endereço de uma imagem, a imagem abra no painel das imagens, só que não tou conseguindo arranjar maneira do procedimento valueChanged dar certo.
O código é esse:
public class Imagem extends JFrame implements ActionListener, ListSelectionListener{
private JPanel painel_imagem = new JPanel();
private JPanel painel_botao = new JPanel();
private JPanel painelLista=new JPanel(new BorderLayout());
private JButton addc = new JButton("+");
private JButton sub = new JButton("-");
private DefaultListModel modeloLista = new DefaultListModel();
private JList lista = new JList(modeloLista);
private JLabel imagem= new JLabel("As imagens aparecem aqui.");
public Imagem(){
setSize(600, 600);
setLocation(200, 100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new BorderLayout());
setResizable(false);
painelLista.add(new JLabel("Lista de ficheiros carregados"), BorderLayout.NORTH);
painelLista.add(new JScrollPane(lista),BorderLayout.SOUTH);
getContentPane().add(painelLista, BorderLayout.NORTH);
lista.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
lista.setSelectedIndex(-1);
lista.setLayoutOrientation(JList.VERTICAL);
lista.addListSelectionListener(this);
imagem.setSize(200,200);
painel_imagem.setSize(210,210);
painel_imagem.add(imagem);
getContentPane().add(new JScrollPane(painel_imagem), BorderLayout.CENTER);
addc.addActionListener(this);
sub.addActionListener(this);
painel_botao.add(new JLabel("Acrescentar e tirar imagens da lista->"));
painel_botao.add(addc);
painel_botao.add(sub);
getContentPane().add(painel_botao, BorderLayout.SOUTH);
}
public void executa(){
setVisible(true);
}
/*Ações para os botões
*
*/
public void actionPerformed(ActionEvent e) {
if(e.getSource()==addc){
JFileChooser ficheiro = new JFileChooser();
int returnVal = ficheiro.showOpenDialog(ficheiro);
if(returnVal == JFileChooser.APPROVE_OPTION){
File file = ficheiro.getSelectedFile();
modeloLista.addElement(file);
}
}
if(e.getSource()== sub && lista.getSelectedIndex()!=-1){
modeloLista.remove(lista.getSelectedIndex());
}
}
/*Ações para a lista
*
*/
public void valueChanged(ListSelectionEvent e){
if(-1<lista.getSelectedIndex()){
int posição = lista.getSelectedIndex();
ImageIcon boneco=(ImageIcon)modeloLista.getElementAt(posição);
imagem.setIcon(boneco);
imagem.setText(null);
}else{
imagem.setIcon(null);
imagem.setText(new String("não há nada"));
}
}
}
public class Principal {
public static void main(String args[]){
Imagem imagem = new Imagem();
imagem.executa();
}
}
O programa faz tudo bem, só não me aparece as imagens...tá dando erro no procedimento do valueChanged.
Deve tar faltando qualquer coisinha, porque ele reage bem quando clico com o mouse em algum link de uma imagem...