Oi
eu estou criando um aplicação e vai ter uma JList e vai ler do banco os valores da lista. Bem isso OK pegando com
//conexão ao banco e stm classforname aquelas coisas
while(rs.next()){
String 1 = rs.getString(1);
System.out.println(1);
}
eu quero saber se ao invés de imprimir no console da para colocar na lista String[] dados = {"um","dois","tres"};
JList lista = new JList(dados);
e pegar esses valores e colocar no JList quando eu pedir para abrir essa tela que tem a JList.
Se dá para adicionar em tempo de execução! pode até sumir depois… só preciso no momento para o usuário selecionar o item (é com getSelectedValue()???) e fazer o que eu preciso.
eu achei esse endereço com explicações sobre JList.
Por enquanto obrigado
Ricardo
Opa,
Adicionei um texto fixo diretamente na action de um jButton, mas acho que com isso você consegue adaptar ao seu código.
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
DefaultListModel dlm = new DefaultListModel();
for(int i = 0; i < jList1.getModel().getSize(); i++) {
dlm.addElement(jList1.getModel().getElementAt(i));
}
dlm.addElement("Texto Inserido");
jList1.setModel(dlm);
}
Dessa maneira ele pega o atual conteudo da lista e adiciona no final mais uma linha. Se os dados que a lista já possuia vinham do banco, trate primeiramente a inserção dos dados e depois crie um DefaultListModel com os dados do banco e não com os dados da lista, assim vai garantir que eles estejam atualizados.
[code]public class Estudos extends JFrame{
JList lista;
JTextField campo;
public Estudos() {
super(“A classe JList”);
Container c = getContentPane();
c.setLayout(new FlowLayout(FlowLayout.LEFT));
// Cria um novo DefaultListModel
DefaultListModel modelo = new DefaultListModel();
// Cria a JList
lista = new JList();
// Atribui o DefaultListModel à JList
lista.setModel(modelo);
// Um botão que permite adicionar itens na JList
JButton btn = new JButton("Adicionar na JList");
btn.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
String valor = campo.getText();
if(valor.length() != 0){
((DefaultListModel)(lista.getModel()))
.addElement(valor);
campo.setText("");
campo.requestFocus();
}
}
}
);
// Adiciona a lista à janela
c.add(new JScrollPane(lista));
// Cria um JTextField e o adiciona à janela
campo = new JTextField(10);
c.add(campo);
// Adiciona o botão à janela
c.add(btn);
setSize(350, 250);
setVisible(true);
}
public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}[/code]
Nesse novo método ele disconsidera o que já existia na lista e pega somente os registros que estão no banco.
Como o seu novo registro já vai estar lá, dessa maneira deve funcionar corretamente.
yorgan
surgiu um problema… na verdade isso esta para um botão! E eu preciso saber se é possível tb ele criar a lista quando for chamado, assim que abrir. Assim:
Frame A tem um botão que abre outro Frame B, que tem a lista, e quando for aberto pelo botão do Frame A, AUTOMATICAMENTE cria a lista para o usuario. OK?
segue o meu código (do botão que eu criei) para vc ver que esta dando um erro. Ele pega o ultimo registro do banco apenas (não pega tudo).
assim:[code] private void btnPegaActionPerformed(java.awt.event.ActionEvent evt) throws SQLException {//GEN-FIRST:event_btnPegaActionPerformed
String fam = “”;
DefaultListModel dlm = new DefaultListModel();
for(int i = 0; i < lstFamilias.getModel().getSize(); i++) {
dlm.addElement(lstFamilias.getModel().getElementAt(i));
try{
Class.forName(“com.mysql.jdbc.Driver”);
con = DriverManager.getConnection(“jdbc:mysql://localhost/dbsgod”, “root”, “”);
stm = con.createStatement();
rs = stm.executeQuery(“select * from familia”);
while(rs.next()){
fam = rs.getString(4);
}
}//fim try
List<String> lista = new ArrayList<String>();
while(rs.next()){
//Dica: Use o nome do campo, não o índice
lista.add(rs.getString("Nome"));
}
71C4700 Deu certo isso q vc falou. Agora eu chamo o AtualizaLista na hora que ele entra (o metódo da classe pela construtor da classe). Deu OK! Obrigado…
yorgan
Essa está sendo a maior das dores de cabeça (dor de cabeça boa!!!). O cliente QUER DE QUALQUER JEITO MVC e isso está me tomando um tempo maior. Mas vou fazer assim para despois transferir para JSP (trampo futuro, que vai garantir + leite para minhas 3 filhas). Mas mesmo assim obrigado, de novo!
ViniGodoy
Eu pensei em usar isso… até no NetBeans e no Eclipse ele grita por " Expected" que já tava me deixando louco…
Valew tb. Obrigado…
criador
Testei e não deu erro mais (o que queria está OK!) Vc tem outra idéia? Estou aberto para sugestões…