Problema ao criar ações com JList (valueChanged)

1 resposta
T

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...

1 Resposta

T

Ja consegui.

Criado 6 de outubro de 2006
Ultima resposta 7 de out. de 2006
Respostas 1
Participantes 1