Adicionar em List

31 respostas
K

Galera, sou iniciante e estou tentando aprender a programar em java fazendo uns exercicios. Estou sofrendo bastante, mas estou achando legal. Sera que alguem pode me ajudar nesse codigo abaixo? Adicionei uma list (que consequentemente adicionou uma scrollPane, nao entendi isso…) porem o prorama gera um erro. alguem pode me explicar como faço isso funcionar? a duvida é idiota, mas ainda estou aprendendo… ;D

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    int contador=0;
    String nome=" ";
    nome=jTextField1.getText();
    while (contador<10){
      jList1.add(nome);     <------------------- erro (cannot find symbol method add..)
      contador++;
    }
}

31 Respostas

JonasZzZz

vc fez o import?

JonasZzZz

e instanciou o jlist?

devel.andrerocha

Se vc esta tentando adicionar items para serem exibidos na lista o correto é usar um model

JList jlist = new JList(); DefaultListModel model = (DefaultListModel) jlist.getModel(); model.addElement("abc"); jlist.setModel(model);

ou dar um set na listData dele

Object []abc = new Object[]{"1", "2"}; jlist.setListData(abc);

K

vixi… como assim instalou o jlist? eu adicionei ele na jframe atraves do componente swing… tipo…nao manjo quase nda… mas c tivesse q improtar apareceria a opçao pra eu importar lah no erro apontado, nao apareceria? eu uso o netbeans…

K

kra… nao sei como funciona esse model… hehehe

JonasZzZz

ah…

é instanciar(essa palavra é muito importante, aprenda sobre ela)… nao instalar…

eu não entendo nada swing/awt… foi um chute…
mas acho que o devel te deu a solução…

JonasZzZz

instanciar é fazer algo como…

Blablabla blablabla = new Blablabla();
surfzera

cara voce deve criar um objeto lista primeiro antes de adicionar alguma coisa a ela … tipo o nome que vc está tentando adicionar. Para criar a lista faça:

ArrayList list = new ArrayList();

K

mas quando eu arrasto a list da barra de componentes swing para minha jframe, eu nao estou criando a list? nao entendi…

JonasZzZz

ele ta te confundindo… não é list… é JList…

ele ta falando de collections… num tem nada a ver…

K

jonazz me explica ai entao kra… por favor

Ayanami

Você já tentou o que o devel.andrerocha disse?

devel.andrerocha:
Se vc esta tentando adicionar items para serem exibidos na lista o correto é usar um model

JList jlist = new JList(); DefaultListModel model = (DefaultListModel) jlist.getModel(); model.addElement("abc"); jlist.setModel(model);

ou dar um set na listData dele

Object []abc = new Object[]{"1", "2"}; jlist.setListData(abc);

K

já tentei sim… só se eu nao fiz certo… só sei que nao deu…

Ayanami

Posta aí como você fez.

K

pera ae

K
import java.util.ArrayList;

import javax.swing.DefaultListModel;

import javax.swing.JList;

/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

/*

  • UsoWhile.java
  • Created on 16/12/2008, 18:27:12
    */

/**
*

  • @author Usuário
    */
    public class UsoWhile extends javax.swing.JFrame {

    /** Creates new form UsoWhile */
    
    public UsoWhile() {
    
    initComponents();
    
    }
    

    /** This method is called from within the constructor to

    • initialize the form.

    • WARNING: Do NOT modify this code. The content of this method is

    • always regenerated by the Form Editor.
      
      */
      
      @SuppressWarnings(unchecked)
      
      // 
      
      private void initComponents() {
      
      jTextField1 = new javax.swing.JTextField();
      
      jButton1 = new javax.swing.JButton();
      
      jLabel1 = new javax.swing.JLabel();
      
      jScrollPane1 = new javax.swing.JScrollPane();
      
      jList1 = new javax.swing.JList();
      

      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

      jButton1.setText(Inserir);
      
      jButton1.addActionListener(new java.awt.event.ActionListener() {
      
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      
      jButton1ActionPerformed(evt);
      
      }
      
      });
      

      jLabel1.setText(“Nome:”);

      jList1.setModel(new javax.swing.AbstractListModel() {
      
      String[] strings = { Item 1, Item 2, Item 3 };
      
      public int getSize() { return strings.length; }
      
      public Object getElementAt(int i) { return strings[i]; }
      
      });
      
      jScrollPane1.setViewportView(jList1);
      
      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
      
      getContentPane().setLayout(layout);
      
      layout.setHorizontalGroup(
      
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(layout.createSequentialGroup()
      
      .addGap(105, 105, 105)
      
      .addComponent(jButton1)
      
      .addContainerGap(218, Short.MAX_VALUE))
      
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(layout.createSequentialGroup()
      
      .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 209, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addContainerGap())
      
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
      
      .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 165, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addGap(155, 155, 155))))
      
      );
      
      layout.setVerticalGroup(
      
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(layout.createSequentialGroup()
      
      .addGap(52, 52, 52)
      
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      
      .addComponent(jLabel1)
      
      .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
      
      .addComponent(jButton1)
      
      .addGap(31, 31, 31)
      
      .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addContainerGap(61, Short.MAX_VALUE))
      
      );
      

      pack();
      }//

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    
    // TODO add your handling code here:
    
    int contador=0;
    
    String nome=" ";
    
    nome=jTextField1.getText();
    
    while (contador<10){
    
    jList1.add(nome);
    
    contador++;
    

    }

    /**

    • @param args the command line arguments
      */
      public static void main(String args[]) {
      java.awt.EventQueue.invokeLater(new Runnable() {
      public void run() {
      new UsoWhile().setVisible(true);
      }
      });
      }
    // Variables declaration - do not modify
    
    private javax.swing.JButton jButton1;
    
    private javax.swing.JLabel jLabel1;
    
    private javax.swing.JList jList1;
    
    private javax.swing.JScrollPane jScrollPane1;
    
    private javax.swing.JTextField jTextField1;
    
    // End of variables declaration
    

}

K

É o codigo que eu havia feito antes… nao coloquei ai o que o devel.andrerocha havia dito… eu cheguei a testar o q ele falou, mas nao deu certo, nao sei c foi pq eu coloquei errado ou c nao da certo mesmo. Voce pode me ajudar?

Ayanami

Se você fizer certinho, funciona.

já vou até fazer o trabalho de adaptar pro seu código: DefaultListModel model = (DefaultListModel)jList1.getModel(); // criando um novo objeto model a partir do model atual da lista model.addElement("abc"); // adicionando um elemento a esse model jList1.setModel(model); // definindo o model da JList como esse "model atualizado"Agora é só encaixar e adaptar…

K

vou tentar pera ae

K

ah kra… sei que é pedir muito, mas será que voce nao pode fazer esse programinha pra mim e mostrar o codigo? Eu programava em delphi antes, e era só jogar os componentes na frame e usar as propriedades, bem diferente de java. Se vc me mostrar o codigo completo eu vou tentar compreender melhor… De qualquer forma, muito obrigado por tentar me ajudar.

JonasZzZz

vo tenta compila aqui… pera um pokin

K

blz…

K

deu certo?

JonasZzZz

é… compilou… eu implementei o método assim…

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
        int contador = 0;
        String nome = null;
        nome = jTextField1.getText();
        jList1 = new JList();
        DefaultListModel model = (DefaultListModel) jList1.getModel();

        while (contador < 10) {
            model.addElement(nome);
            jList1.setModel(model);
            contador++;
        }
    }

mas acho que a logica toda do seu programa ta errada… num é só essa parte…

o que o programa tem que fazer??
num fico muito claro para mim…

K

eh assim… eu estava fazendo uns exercicios pra aprender a usar comandos de repetiçao em java, usando o netbeans. Pra isso, eu criei uma interface usando os componentes swing com: 1 jtextfield, 1 jlist e um botao. Ao escrever no textfield e apertar o botao, o texto escrito iria ser adicionado 10 vezes (ciclo while ) na jlist. Era isso que eu queria fazer…

JonasZzZz

caraio… consegui…

public class UsoWhile extends javax.swing.JFrame {
   

    public UsoWhile() {
        initComponents();
    }

    @SuppressWarnings("unchecked")
    private void initComponents() {

        jTextField1 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jList1 = new javax.swing.JList();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jButton1.setText("Inserir");
        jButton1.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jLabel1.setText("Nome:");



        jScrollPane1.setViewportView(jList1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(105, 105, 105).addComponent(jButton1).addContainerGap(218, Short.MAX_VALUE)).addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup().addContainerGap().addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED).
addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).
addGroup(layout.createSequentialGroup().addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 209, javax.swing.GroupLayout.PREFERRED_SIZE).addContainerGap()).addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup().addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 165, javax.swing.GroupLayout.PREFERRED_SIZE).addGap(155, 155, 155)))));
        layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(52, 52, 52).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).
addComponent(jLabel1).addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton1).addGap(31, 31, 31).addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE).addContainerGap(61, Short.MAX_VALUE)));

        pack();
    }// </editor-fold>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:

        int contador = 0;
        String nome;
        nome = jTextField1.getText();
        String strings[] = new String[10];
        

        while (contador < 10) {
            strings[contador] = nome;
            contador++;
        }
        jList1.setListData(strings);
        jList1.getModel();
        
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new UsoWhile().setVisible(true);
            }
        });
    }

// Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JList jList1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextField jTextField1;
// End of variables declaration
}

mas cara… num começa estudando java por swing não… pior coisa que vc faz…

flws…

K

pq? falaram q é melhor começar por swing…
O que voce aconselha?
bom, valeu kra, valeu mesmo!
abrasss

JonasZzZz

ah… e pela otra solução que o cara ta falando pra vc…
eu não consegui… da um erro de cast…

JonasZzZz

swing em java é mto complicado pra quem nunca viu java…
tem mto conceito por traz…

aconselho voce a comprar um livro chamado Como Programar Java da Deitel…

ou senão baixa a apostila da Caelum na internet… é gratuita…

JonasZzZz

ah… nem precisa da linha 61 do código que eu te enviei… viajei…

qlq coisa é só gritar ae no forum…
fui… to com sono…

K

blz… vou tentar seguir o seu conselho…
valeu kra!

Criado 16 de dezembro de 2008
Ultima resposta 16 de dez. de 2008
Respostas 31
Participantes 5