Como enviar uma seleção de um JList para outro JList?

Ola pessoal, estou tentando criar uma ação de pegar uma seleção de uma Jlist e adicionar essa seleção para uma outra, mas gostaria de poder limpar a 1ª Jlist apos selecionar para que não sejam enviados itens duplicados, alguém poderia e me ajudar?

Você já leu o Javadoc do JList?
http://download.oracle.com/javase/6/docs/api/javax/swing/JList.html

Uma dica, comece procurando por um “get”. E a palavra Selected pode ajudar no processo.

Se não ajudar, você ainda pode tentar o “How to” do JList:
http://download.oracle.com/javase/tutorial/uiswing/components/list.html

Se ainda assim não der, que tal postar qual é a sua dúvida específica?

Para pegar resultados de JList, vc pode usar getSelectedValues() ou getSelectedIndices(), dependendo do que você quer.
Você limparia os ítens selecionados, ou a lista inteira?

Então amigo o problema seria o seguinte:
meu formulário possui duas JList, a primeira lista opções do banco, e a segunda deve ser preenchida com opções selecionadas da primeira. Faço dessa forma:

[code]private void adicionaDepartamentos() {
DefaultListModel lista = new DefaultListModel();
List selecionados = jListDepartamentos.getSelectedValuesList();

    // adiciona selecao
    try {
        Iterator itens = selecionados.iterator();
        while (itens.hasNext()) {
            DepartamentoDTO departamentos = (DepartamentoDTO) itens.next();
            lista.addElement(departamentos);
            jListDepartamentosUsuario.setModel(lista);
        }
    } catch (Exception e) {
        Logger.getLogger(Usuarios.class.getName()).log(Level.SEVERE, null, e.getMessage());
    }

    // remove selecao     ? 
    int[] selecao = jListDepartamentos.getSelectedIndices();

}[/code]

Eu gostaria de após adicionar minha seleção(diga-se multi-seleção), limpara a primeira JList dos itens selecionados.

Estou removendo dessa forma, mas da erro se eu seleciono mais do que 2 itens por vez:

// remove selecao int[] selecao = jListDepartamentos.getSelectedIndices(); for (int i = 0; i < selecao.length; i++) { ((DefaultListModel) jListDepartamentos.getModel()).remove(i); }

Erro: Exception in thread “AWT-EventQueue-0” java.lang.ArrayIndexOutOfBoundsException: 2 >= 2

[quote=juniorm3]Estou removendo dessa forma, mas da erro se eu seleciono mais do que 2 itens por vez:

// remove selecao int[] selecao = jListDepartamentos.getSelectedIndices(); for (int i = 0; i < selecao.length; i++) { ((DefaultListModel) jListDepartamentos.getModel()).remove(i); }

Erro: Exception in thread “AWT-EventQueue-0” java.lang.ArrayIndexOutOfBoundsException: 2 >= 2[/quote]

Tente desta forma

int[] selecao = jListDepartamentos.getSelectedIndices(); for (int i = selecao.length; i > 0; i--) { ((DefaultListModel) jListDepartamentos.getModel()).remove(0); }

Funcionou obrigado pela ajuda, não tinha pensando dessa forma, preciso melhorar minha logica!

Obrigado outra vez!

Está disponível para download um exemplo completo (projeto Netbeans) para resolver este problema.
O exemplo consiste de dois JList, sendo um deles uma lista de cidades à serem visitadas e outro, uma lista de cidades selecionadas.
O exemplo foi implementado com DefaultListModel.

link para download: https://drive.google.com/file/d/0B8_pfk1uzkuwTDU3RmRDYTl5SWs/edit?usp=sharing

Espero que possa ser útil.

Obrigado pela ajuda, resolvi o problema da seguinte forma

// primeiro evento
DefaultListModel listModel = new DefaultListModel();
        DefaultListModel listModelUsuario = new DefaultListModel();
        Object[] selecao = jLDepartamentosDisponiveis.getSelectedValues();

        for (Object valor : selecao) {
            listModelUsuario.addElement(valor);
        }
        jLDepartamentosSelecionado.setModel(listModelUsuario);
// segundo evento
DefaultListModel listModel = new DefaultListModel();
        DefaultListModel listModelUsuario = new DefaultListModel();
        Object[] selecao = jLDepartamentosSelecionado.getSelectedValues();
        jLDepartamentosSelecionado.getSelectedIndex();
        for (Object valor : selecao) {
            listModelUsuario.removeElement(valor);
        }
        jLDepartamentosSelecionado.setModel(listModelUsuario);

Queria fazer quase a mesma coisa. Estou com duas JList, sendo que uma já está fazendo a conexão com o banco de dados. Eu queria passar os dados que estão na JList que faz a conexão com o banco, para a outra JList. Como faço?

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JList;
import javax.swing.JButton;

import sistema.control.src.sistema.bin.FornecedorBin;
import sistema.control.src.sistema.bin.FuncionarioBin;
import sistema.control.src.sistema.conexao.conexao;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JLabel;
import javax.swing.JTextField;
import java.awt.Font;
import javax.swing.JComboBox;

public class CompraGui extends JFrame {

/**
 * 
 */




private static final long serialVersionUID = 1L;
ResultSet rs = null;
Statement statement = null;
conexao con = null;


private JPanel contentPane;
private JTextField jtfData;
private JComboBox cbbfuncionario;
private JComboBox cbbfornecedor;

JList compra;

// DefaultListModel =

/**
 * Launch the application.
 */
public static void main(String[] args) {
	EventQueue.invokeLater(new Runnable() {
		public void run() {
			try {
				CompraGui frame = new CompraGui();
				frame.setVisible(true);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	});
}

public void bullComboBox() {
	try {
		Connection con;
		

		Class.forName("com.mysql.jdbc.Driver");
		String url = "jdbc:mysql://localhost/iprjesporte";
		con = DriverManager.getConnection(url,"root","");
		String query = "SELECT * FROM `funcionario`";
		java.sql.PreparedStatement pst = con.prepareStatement(query);
		ResultSet rs = pst.executeQuery();
		ArrayList<FuncionarioBin> todosFuncionarios = new ArrayList<FuncionarioBin>();
		
		while(rs.next())
		{
			cbbfuncionario.addItem(rs.getString("nomefunc"));
			todosFuncionarios.add(new FuncionarioBin(rs.getInt("codfuncionario"),rs.getString("nomefunc")));
		}
	}catch (Exception e){
			
		}
	}

////////_____________
public void bollComboBox() {
	try {
		Connection con;
		

		Class.forName("com.mysql.jdbc.Driver");
		String url = "jdbc:mysql://localhost/iprjesporte";
		con = DriverManager.getConnection(url,"root","");
		String query = "SELECT * FROM `fornecedor`";
		java.sql.PreparedStatement pst = con.prepareStatement(query);
		ResultSet rs = pst.executeQuery();
		ArrayList<FornecedorBin> todosFornecedores = new ArrayList<FornecedorBin>();
		
		while(rs.next())
		{
			cbbfornecedor.addItem(rs.getString("nomeforn"));
			todosFornecedores.add(new FornecedorBin(rs.getInt("codfornecedor"),rs.getString("nomeforn")));
		}
	}catch (Exception e){
			
	}
}

////________________

/**
 * Create the frame.
 */
public CompraGui()throws SQLException {
	super("A classe JList");
	
	// Cria um novo DefaultListModel
    DefaultListModel modelo = new DefaultListModel();
    compra = new JList();
    compra.setModel(modelo);

	
	setTitle("Compra");
	
	initComponents();
	con = new conexao();
	statement = con.abrirBDConn().createStatement();
	
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setBounds(100, 100, 531, 599);
	contentPane = new JPanel();
	contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
	setContentPane(contentPane);
	contentPane.setLayout(null);
	
	JList list = new JList();
	list.setBounds(5, 5, 0, 251);
	contentPane.add(list);
	
	final JList Consulta = new JList();
	Consulta.setBounds(305, 212, 200, 256);
	contentPane.add(Consulta);
	
	JButton btnConsultar = new JButton("Consultar Produto");
	btnConsultar.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent arg0) {
			//______
			String codigoFuncionarioCombobox = "";
			 
			try {
				Connection con;
				

				Class.forName("com.mysql.jdbc.Driver");
				String url = "jdbc:mysql://localhost/iprjesporte";
				con = DriverManager.getConnection(url,"root","");
				String query = "SELECT * FROM `funcionario`";
				java.sql.PreparedStatement pst = con.prepareStatement(query);
				ResultSet rs = pst.executeQuery();
				ArrayList<FuncionarioBin> todosFuncionarios = new ArrayList<FuncionarioBin>();
				
				while(rs.next())
				{
					todosFuncionarios.add(new FuncionarioBin(rs.getInt("codfuncionario"),rs.getString("nomefunc")));
				}
				codigoFuncionarioCombobox = todosFuncionarios.get(1).getCodigo()+"";
				//
				
			}catch (Exception e){
			}
			//_____
			
			//*************************
			String codigoFornecedorCombobox = "";
			 
			try {
				Connection con;
				

				Class.forName("com.mysql.jdbc.Driver");
				String url = "jdbc:mysql://localhost/iprjesporte";
				con = DriverManager.getConnection(url,"root","");
				String query = "SELECT * FROM `fornecedor`";
				java.sql.PreparedStatement pst = con.prepareStatement(query);
				ResultSet rs = pst.executeQuery();
				ArrayList<FornecedorBin> todosFornecedores = new ArrayList<FornecedorBin>();
				
				while(rs.next())
				{
					todosFornecedores.add(new FornecedorBin(rs.getInt("codfornecedor"),rs.getString("nomeforn")));
				}
				codigoFornecedorCombobox = todosFornecedores.get(1).getCodigo()+"";
				//
				
			}catch (Exception e){
			}
			
			
			//************************
			
			try {
			DefaultListModel DML = new DefaultListModel();
			String sql = "SELECT nomeprod, preco FROM `produto` WHERE preco ";
			rs = statement.executeQuery(sql);
			while(rs.next()){
				String name=rs.getString("nomeprod")+ " "+rs.getFloat("preco");
				DML.addElement(name);
				
			}
			
			Consulta.setModel(DML);
			
		} catch (SQLException ex) {
			Logger.getLogger(CompraGui.class.getName()).log(Level.SEVERE, null, ex);
        }
		}
		
		
	});
	
	DefaultListModel listModel = new DefaultListModel();
	DefaultListModel listModelUsuario = new DefaultListModel();
	
	
	
	
	btnConsultar.setBounds(305, 178, 200, 23);
	contentPane.add(btnConsultar);
	
	JButton button = new JButton("<<<");
	button.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent arg0) {
			
		}
	});
	button.setFont(new Font("Tahoma", Font.PLAIN, 10));
	button.setBounds(215, 320, 80, 23);
	contentPane.add(button);
	
	JLabel lblData = new JLabel("Data:");
	lblData.setBounds(346, 110, 37, 17);
	contentPane.add(lblData);
	
	jtfData = new JTextField();
	jtfData.setBounds(393, 108, 112, 20);
	contentPane.add(jtfData);
	jtfData.setColumns(10);
	
	JLabel lblCadastroDeCompra = new JLabel("Cadastro de Compra");
	lblCadastroDeCompra.setFont(new Font("Tahoma", Font.PLAIN, 21));
	lblCadastroDeCompra.setBounds(15, 22, 200, 37);
	contentPane.add(lblCadastroDeCompra);
	
	JLabel lblFuncionrio = new JLabel("Funcion\u00E1rio:");
	lblFuncionrio.setBounds(15, 87, 73, 14);
	contentPane.add(lblFuncionrio);
	
	JLabel lblFornecedor = new JLabel("Fornecedor:");
	lblFornecedor.setBounds(10, 152, 78, 14);
	contentPane.add(lblFornecedor);
	
	cbbfuncionario = new JComboBox();
	cbbfuncionario.setBounds(98, 84, 182, 20);
	contentPane.add(cbbfuncionario);
	
	cbbfornecedor = new JComboBox();
	cbbfornecedor.setBounds(98, 149, 182, 20);
	contentPane.add(cbbfornecedor);
	
	JList compra = new JList();
	compra.setBounds(5, 206, 200, 262);
	contentPane.add(compra);
	
	JButton btnCadastrar = new JButton("Cadastrar");
	btnCadastrar.setBounds(393, 495, 97, 23);
	contentPane.add(btnCadastrar);
	
	JButton btnConsultar_1 = new JButton("Consultar");
	btnConsultar_1.setBounds(266, 495, 97, 23);
	contentPane.add(btnConsultar_1);
	
	JButton btnBuscar = new JButton("Buscar");
	btnBuscar.setBounds(393, 529, 97, 23);
	contentPane.add(btnBuscar);
	
	bullComboBox();
	bollComboBox();
}


private void initComponents() {
	// TODO Auto-generated method stub