Estava usando o List mas tenho recebido sempre a msg de deprecation, quero mudar para o objeto JLIST mas não consigo preenche-lo usando com origem para a lista uma tabela em um banco (estou testando com access)
POR FAVOR me enviei o trecho exato de como posso preencher, usem como exemplo uma tabela chamada AGENDA e o campo chamado NOME só para exemplificar, já tentei de tudo. com o List eu consigo mas quero usar o JList.
Fico a maior parte do tempo no trabalho, quem puder responder, além de responder aqui, me enviem por EMail: aswil@embratel.com.br
Muito Grato pela atenção, Wilson.
É o seguinte, estude esse código:
//Exemplo 18.3: AlimentaComboList.java
//Esse programa exibe os registros do banco de dados Cidade.mdb
//em um JComboBox e um JList
import java.awt.;
import java.awt.event.;
import java.sql.;
import java.util.;
import javax.swing.*;
public class AlimentaComboList extends JFrame
{
private JButton jbSair;
private JPanel jpDados, jpBotoes;
private Container c;
private Connection conexao;
private Statement status;
private ResultSet rs;
private ResultSetMetaData rsmd;
private JComboBox jcbTeste;
private JList jListTeste;
String nome[];
public AlimentaComboList()
{
super("Preenchendo um JComboBox e um JList com dados");
int nRegistros = quantidadeRegistros();
montaDados(nRegistros);
jcbTeste = new JComboBox(nome);
jListTeste = new JList(nome);
c = getContentPane();
jpDados = new JPanel();
jpDados.add(jcbTeste);
jpDados.add(jListTeste);
jbSair = new JButton("Sair");
jbSair.addActionListener
(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
desconectar();
System.exit(0);
}
}
);
jpBotoes = new JPanel();
jpBotoes.setLayout(new GridLayout(1, 2));
jpBotoes.add(jbSair);
addWindowListener
(
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
desconectar();
System.exit(0);
}
}
);
c.add(jpDados, BorderLayout.CENTER);
c.add(jpBotoes, BorderLayout.SOUTH);
setSize(300, 300);
show();
}
public void montaDados(int quant)
{
try
{
String consulta = "Select * from tblCidade order by nome_tblCidade";
conectar(consulta);
if(!rs.next())
{
JOptionPane.showMessageDialog(this, "Não há registros", "Tabela vazia", JOptionPane.ERROR_MESSAGE);
return;
}
int i = 0;
nome = new String[quant];
do
{
nome[i] = rs.getString(2);
i++;
}while(rs.next());
}
catch(SQLException sqlex)
{
System.err.println("Erro na construcao da tabela");
}
}
public int quantidadeRegistros()
{
int i = 0;
try
{
String consulta = "Select * from tblCidade";
conectar(consulta);
if(!rs.next())
{
JOptionPane.showMessageDialog(this, "Não há registros", "Tabela vazia", JOptionPane.ERROR_MESSAGE);
return 0;
}
do
{
i++;
} while(rs.next());
}
catch(SQLException sqlex)
{
System.err.println("Erro na construcao da tabela");
}
return i;
}
public void conectar(String cons)
{
String endereco = "jdbc:odbc:Cidade";
String usuario = "";
String senha = "";
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conexao = DriverManager.getConnection(endereco, usuario, senha);
status = conexao.createStatement();
rs = status.executeQuery(cons);
rsmd = rs.getMetaData();
}
catch(ClassNotFoundException cnfe)
{
System.err.println("Nao carregou o driver JDBC/ODBC");
cnfe.printStackTrace();
System.exit(1);
}
catch(SQLException sqlex)
{
System.err.println("Conexao desabilitada");
sqlex.printStackTrace();
System.exit(1);
}
}
public void desconectar()
{
try
{
conexao.close();
}
catch(SQLException sqlex)
{
System.err.println("Erro ao fechar");
}
}
public static void main(String args[])
{
new AlimentaComboList();
}
}
Ahhh, e considere o seguinte Banco de dados:
Cidade.mdb
Com a seguinte tabela:
tblCidade
Com os seguintes campos:
codigo_tblCidade Tipo: Número Chave Primária: true
nome_tblCidade Tipo: Text Chave Primária: false
uf_tblCidade Tipo: Text Chava Primária: false
Na hora de executar o código não esqueça de criar a conectividade JDBC/ODBC.