Pegando um objeto em um jList

3 respostas
F

Seguinte,
Eu tenho um jlist, pra pega o objeto no jlist eu uso:

int i = jlist.getselectedindex();
So gue eu gostaria de usar esse objeto para chamar alguns métodos, exemplo:

i.setalugado(true);
Como eu poderia fazer isso?
muito obrigado desde já. :slight_smile:

3 Respostas

W

Fiz esse exemplo quando estava estudando JList, talvez ajude :

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

@SuppressWarnings("serial")
public class JListEx extends JFrame {

	JList lista;
	MyListModel model;	
	String[] names ={"LocalUser","RemoteUser"};
	
	public JListEx() {
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		getContentPane().setLayout(new BorderLayout());
		
		model = new MyListModel();
		model.addArray(names);
		
		lista = new JList(model);
		
		lista.addMouseListener(new MouseAdapter() {			
			public void mouseClicked(MouseEvent e) {
				String user = (String)model.getElementAt(lista.getSelectedIndex());
				System.out.println("Selected user : " + user);
				System.out.println("String size : " + user.length());
			}			
		});
				
		add(lista, BorderLayout.CENTER);	
		
		setSize(new Dimension(100,200));		
		setVisible(true);
				
	}
		
	public static void main(String[] args) {
		new JListEx();
	}

}

@SuppressWarnings("serial")
class MyListModel extends DefaultListModel {
	
	public MyListModel() {
		super();
	}
	
	public void addArray(String[] array) {		
		for (int i = 0; i < array.length; i++) {
			super.addElement(array[i]);
		}		
	}
	
}

Aqui eu poderia pegar qualquer object, mas como eu coloquei um array de strings :

String user = (String)model.getElementAt(lista.getSelectedIndex());

Aqui eu imprimo no terminal.

System.out.println("Selected user : " + user);
System.out.println("String size : " + user.length());

Se vc criar um object vc poderia por exemplo ao inves de colocar no model da JList um array de strings, cria um vector com os seus objetos e quando vc clicar na lista, pega o objeto no vector ai vc usa como quiser.

//Daniel

F

saca soh, coloquei os objetos na mesma posicao no arraylist e no defautlistmodel

ArrayList<Carro> carros; DefaultListModel linhas = new DefaultListModel(); public TelaAluguel() { initComponents(); carros = new ArrayList<Carro>(); Carro car1 = new Carro("MCX1231","Gol Power", "azul",2003); Carro car2 = new Carro("MCY1899","Corsa Wind", "vermelho",1998); Carro car3 = new Carro("LZX4878","Omega Cd", "preto",1996); Carro car4 = new Carro("AAY3245","Palio fire", "prata",2007); carros.add(0, car1); carros.add(1, car2); carros.add(2, car3); carros.add(3,car4); linhas.add(0,car1); linhas.add(1,car2); linhas.add(2,car3); linhas.add(3,car4); jList1.setModel(linhas);
soh q quando, eu utilizo o metodo, nao acontece nada

int i = jList1.getSelectedIndex(); if(carros.contains(i)) { carros.get(i).setAlugado(); linhas.remove(i);
se puder ajudar eu agradeco =)

W

Isso que vc queria fazer ?

Classe Carro:

public class Carro {

	String placa;
	String modelo;
	String cor;
	int ano;	
	
	public Carro() { }
	
	public Carro(String placa, String modelo, String cor, int ano) {
	
		this.placa = placa;
		this.modelo = modelo;
		this.cor = cor;
		this.ano = ano;		
	}
		
}

GUI :

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

@SuppressWarnings("serial")
public class ListaCarros extends JFrame {
	
	JList listacarros;
	DefaultListModel model;
	ArrayList<Carro> lista = new ArrayList<Carro>();
	
	public ListaCarros() {
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);			
		setSize(new Dimension(300,300));
		
		model = new DefaultListModel();	
			
		Carro car1 = new Carro("MX1212","Corsa", "azul",1990);
		Carro car2 = new Carro("MX1414","Gol", "preto",1992);
		Carro car3 = new Carro("LG1212","Variant", "branca",1970);
		
		lista.add(car1);
		lista.add(car2);
		lista.add(car3);
		
		model.addElement(car1.modelo);
		model.addElement(car2.modelo);
		model.addElement(car3.modelo);
				
		listacarros = new JList(model);

		showLista();
		
		listacarros.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				
				int idx = listacarros.getSelectedIndex();
				
				model.removeElementAt(idx);
				lista.remove(idx);
				showLista();
				
			}
		});
		
		add(listacarros);
		setVisible(true);
		
	}
	
	/**
	 * metodo pra exibir a lista de carros
	 */	
	public void showLista() {
		
		System.out.println("Lista de carros");
		
		for (int i = 0 ; i < lista.size(); i++) {
			Carro car = lista.get(i);
			System.out.println(i + " - " + car.modelo);
		}
		
		System.out.println("----");
	
	}
	
	
	public static void main(String[] args) {
		new ListaCarros();		
	}

}

//Daniel

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