Carregar JList com objetos

3 respostas
G

Galera empaquei aqui nesse treco... Tenho uma JList com modelo de 2 carros, que foram retornados como uma Collection, do método addCarro()
Minha dúvida é, qual a melhor maneira de fazer com que ao clicar em um dos carros na JList, ele retorne ou busque, o mesmo objeto Carro, para que possa ser usado em outras telas e/ou explorar as suas outras propriedades ?

Exe: quero clicar no Golf que esta na JList, e recuperrar esse objeto Golf para poder usa-lo em outras telas.
import java.awt.Color;
import java.awt.Container;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class TelaJList extends JFrame {

	public TelaJList() {
		tela();
	}

	DefaultListModel modeloLista = new DefaultListModel();;

	JPanel painel = new JPanel();

	JList lista = new JList(modeloLista);

	Container c = getContentPane();

	public void tela() {

		this.setSize(175, 140);
		this.setLocation(200, 100);
		this.setResizable(false);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);

		Collection<Carro> colecao = this.addCarro();
		Iterator<Carro> it = colecao.iterator();

		while (it.hasNext()) {
			Carro car = (Carro) it.next();
			modeloLista.addElement(car.getModelo());
		}

		painel.setLayout(null);
		painel.setBackground(Color.darkGray);

		lista.setBackground(Color.white);
		lista.setBounds(02, 02, 170, 50);
		lista.addListSelectionListener(new ListSelectionListener() {

			public void valueChanged(ListSelectionEvent e) {

			}

		});

		painel.add(lista);
		c.add(painel);

	}

	public static Collection<Carro> addCarro() {

		Carro car1 = new Carro();
		car1.setPlaca("SDF 1234");
		car1.setModelo("Golf");

		Carro car2 = new Carro();
		car2.setPlaca("NMW 7894");
		car2.setModelo("Fusca");

		Collection<Carro> carros = new ArrayList<Carro>();
		carros.add(car1);
		carros.add(car2);
		return carros;
	}

	public static void main(String[] args) {
		new TelaJList().show();

	}
}

A Classe Carro:

public class Carro {   
	  
    private String placa;   
    private String modelo;
	public String getModelo() {
		return modelo;
	}
	public void setModelo(String modelo) {
		this.modelo = modelo;
	}
	public String getPlaca() {
		return placa;
	}
	public void setPlaca(String placa) {
		this.placa = placa;
	}
    
}

Valeuuu !

3 Respostas

J

nao sei se entendi direito… mas…
vc adicionou objetos num jList

nao é somente implementar o evento no JList
e dar um get nele mesmo ?
e utilizar o retorno onde for necessário?

G

jurunaloco:
nao sei se entendi direito… mas…
vc adicionou objetos num jList

nao é somente implementar o evento no JList
e dar um get nele mesmo ?
e utilizar o retorno onde for necessário?

se eu der um get, irei pegar apenas uma propriedade e nesse caso eu quero o objeto inteiro.
tipo inves de pegar so o getModelo() eu quero o objeto.
Ex.:
Esse bloco carrega a JList com 2 objetos Carro:

while (it.hasNext()) { Carro car = (Carro) it.next(); modeloLista.addElement(car.getModelo()); }
E nesse aqui quero, que ao clicar em um dos carros, seja criado um novo carro com as mesmas caracteristicas do selecionado na lista ou se possível, recuperar esse objeto clicado.
lista.addListSelectionListener(new ListSelectionListener() {

public void valueChanged(ListSelectionEvent e) {
      //Adiciona comandos para recuperar o objeto ou recria-lo
  }

});

Entendeu ?

G

RESOLVIDO !

Criado 31 de outubro de 2007
Ultima resposta 31 de out. de 2007
Respostas 3
Participantes 2