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