ObjectTableModel dando erro

16 respostas
F
BufferedReader reader = new BufferedReader(new FileReader("C:/Aqua/Agenda.txt"));  
    String linha;
    String dados[];
    List<ListaBean> llb = new ArrayList<ListaBean>();
    ListaBean lb;
    for (int i = 0; ;i++)    {
      linha = reader.readLine(); 
      if (linha == null) break;
        dados = linha.split(";");
      lb = new ListaBean();
      lb.setNome(dados[0]);
      lb.setTelefone(dados[1]);
      llb.add(lb);
    } // fim do for


ObjectTableModel<ListaBean> model = new ObjectTableModel<ListaBean>(ListaBean.class, "nome,telefone");
model.addAll(llb);
table.setModel(model); *** erro nessa linha no NetBeans, está sublinhado em vermelho

Alguém pode me ajudar nisso?

16 Respostas

Nicolas_Fernandes

Posta o erro que está dando!

F

Está sublinhado somente o table

Cannot find symbol

Está pedindo para criar classe table, estou usando um jTable.

Não estou entendendo…

Nicolas_Fernandes

Sua variável table foi declarada?

F

O table é uma tabela, JTable.

Estou usando um JTable. Não estou entendendo o que está acontecendo.

Coloquei assim e deu certo: jTable1.setModel(model);

Mas ao clicar no botão:

Exception in thread AWT-EventQueue-0 java.lang.ArrayIndexOutOfBoundsException: 1

at cadastro.CadClientes.btnListarActionPerformed(CadClientes.java:223)

at cadastro.CadClientes.access$300(CadClientes.java:36)

at cadastro.CadClientes$5.actionPerformed(CadClientes.java:110)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

at java.awt.Component.processMouseEvent(Component.java:6504)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)

at java.awt.Component.processEvent(Component.java:6269)

at java.awt.Container.processEvent(Container.java:2229)

at java.awt.Component.dispatchEventImpl(Component.java:4860)

at java.awt.Container.dispatchEventImpl(Container.java:2287)

at java.awt.Component.dispatchEvent(Component.java:4686)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)

at java.awt.Container.dispatchEventImpl(Container.java:2273)

at java.awt.Window.dispatchEventImpl(Window.java:2713)

at java.awt.Component.dispatchEvent(Component.java:4686)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)

at java.awt.EventQueue.access$000(EventQueue.java:101)

at java.awt.EventQueue$3.run(EventQueue.java:666)

at java.awt.EventQueue$3.run(EventQueue.java:664)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)

at java.awt.EventQueue$4.run(EventQueue.java:680)

at java.awt.EventQueue$4.run(EventQueue.java:678)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Exception in thread AWT-EventQueue-0 java.lang.ArrayIndexOutOfBoundsException: 1

at cadastro.CadClientes.btnListarActionPerformed(CadClientes.java:223)

at cadastro.CadClientes.access$300(CadClientes.java:36)

at cadastro.CadClientes$5.actionPerformed(CadClientes.java:110)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

at java.awt.Component.processMouseEvent(Component.java:6504)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)

at java.awt.Component.processEvent(Component.java:6269)

at java.awt.Container.processEvent(Container.java:2229)

at java.awt.Component.dispatchEventImpl(Component.java:4860)

at java.awt.Container.dispatchEventImpl(Container.java:2287)

at java.awt.Component.dispatchEvent(Component.java:4686)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)

at java.awt.Container.dispatchEventImpl(Container.java:2273)

at java.awt.Window.dispatchEventImpl(Window.java:2713)

at java.awt.Component.dispatchEvent(Component.java:4686)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)

at java.awt.EventQueue.access$000(EventQueue.java:101)

at java.awt.EventQueue$3.run(EventQueue.java:666)

at java.awt.EventQueue$3.run(EventQueue.java:664)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)

at java.awt.EventQueue$4.run(EventQueue.java:680)

at java.awt.EventQueue$4.run(EventQueue.java:678)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Agora viajei…

Nicolas_Fernandes

O erro é provindo de alguma iteração sua em algum array dentro do evento do botão que você clica.
Vá dentro do evento do botão e procure o array que você está iterando. O problema é na sua iteração.
Você está usando posições fora do tamanho do array (por isso o ArrayOutOfBoundsException).

Confira isso e depois dê um reply aqui.

F

O código do botão é esse:

BufferedReader reader = new BufferedReader(new FileReader("C:/Aqua/Agenda.txt"));  
    String linha;
    String dados[];
    List<ListaBean> llb = new ArrayList<ListaBean>();
    ListaBean lb;
    for (int i = 0; ;i++)    {
      linha = reader.readLine(); 
      if (linha == null) break;
        dados = linha.split(";");
      lb = new ListaBean();
      lb.setNome(dados[0]);
      lb.setTelefone(dados[1]);
      llb.add(lb);
    } // fim do for
    ObjectTableModel<ListaBean> model = new ObjectTableModel<ListaBean>(ListaBean.class, "nome,telefone");
    model.addAll(llb);
    jTable1.setModel(model);
Nicolas_Fernandes

O que eu vejo que poderia melhorar:

- Faça o seu loop de acordo com o método ready da classe BufferedReader. Ele te garante que você lerá todas as linhas no teu arquivo.
- Valide se o seu array possui as colunas que você quer pegar os dados. Veja a validação que fiz abaixo.

Dá uma olhada se isso soluciona o seu problema:
public class BotaoAcaoActionListener {

    public void actionPerformed(ActionEvent event) {

        BufferedReader bufferedReader = new BufferedReader(new FileReader("..."));

        List<ListaBean> entidadeLista = new ArrayList<ListaBean>();
        ListaBean entidadeBean;

        String[] entidadeDados;
        String entidadeLinha;

        while (bufferedReader.ready()) {
    
            entidadeLinha = bufferedReader.readLine();
            entidadeDados = entidadeLinha.split(";");
    
            entidadeBean = new ListaBean();
            entidadeBean.setNome(dados[0] == null ? "" : dados[0]);
            entidadeBean.setTelefone(dados[1] == null ? "" : dados[1]);
            entidadeLista.add(entidadeBean);
        }   

        ObjectTableModel<ListaBean> model = new ObjectTableModel<ListaBean>(ListaBean.class, "nome, telefone");
        model.add(entidadeLista);
        table.setModel(model);
    }
}
F

Ok, é só copiar e colar esse código para testar?

F
BufferedReader bufferedReader = new BufferedReader(new FileReader("C:/Aqua/Agenda.txt"));  
    
    List<ListaBean> entidadeLista = new ArrayList<ListaBean>();  
        ListaBean entidadeBean;  
  
        String[] entidadeDados;  
        String entidadeLinha;  
  
        while (bufferedReader.ready()) {  
      
            entidadeLinha = bufferedReader.readLine();  
            entidadeDados = entidadeLinha.split(";");  
      
            entidadeBean = new ListaBean();  
            entidadeBean.setNome(entidadeDados[0] == null ? "" : entidadeDados[0]);  
            entidadeBean.setTelefone(entidadeDados[1] == null ? "" : entidadeDados[1]);  
            entidadeLista.add(entidadeBean);  
        }     
  
        ObjectTableModel<ListaBean> model = new ObjectTableModel<ListaBean>(ListaBean.class, "nome, telefone");  
        model.add(entidadeLista);  
        jTable1.setModel(model);

Fiz algumas alterações, tipo:

Estava dados, coloquei entidadeDados.

Fiz desse jeito, tá certo? Nessa linha o que eu coloco?

model.add(entidadeLista); Tá sublinhado em vermelho entidadeLista

Nicolas_Fernandes

Que tipos de parâmetros o método add do ObjectTableModel aceita?
Vê se ele aceita um List, que é o que você tá passando.

E, PELO AMOR DO SANTO DEUS, posta qual o erro junto, se não fica difícil de saber o que tá acontecendo.

F
BufferedReader bufferedReader = new BufferedReader(new FileReader("C:/Aqua/Agenda.txt"));  
    
    List<ListaBean> entidadeLista = new ArrayList<ListaBean>();  
        ListaBean entidadeBean
  
        String[] entidadeDados;  
        String entidadeLinha;  
  
        while (bufferedReader.ready()) {  
      
            entidadeLinha = bufferedReader.readLine();  
            entidadeDados = entidadeLinha.split(";");  
      
            entidadeBean = new ListaBean();  
            entidadeBean.setNome(entidadeDados[0] == null ? "" : entidadeDados[0]);  
            entidadeBean.setTelefone(entidadeDados[1] == null ? "" : entidadeDados[1]);  
            entidadeLista.add(entidadeBean);  
        }     
  
        ObjectTableModel<ListaBean> model = new ObjectTableModel<ListaBean>(ListaBean.class, "nome, telefone");  
        model.add(entidadeBean);  
        jTable1.setModel(model);

Tava dando esse erro: variable entidadeBean might not have been initialized

Ao colocar entidadeLista no model.add, deu esse erro:

method add in class com.towel.swing.table.ObjectTableModel cannot be applied to given types;

required: cadastro.ListaBean

found: java.util.List<cadastro.ListaBean>

reason: actual argument java.util.List<cadastro.ListaBean> cannot be converted to cadastro.ListaBean by method invocation conversion
Exception in thread AWT-EventQueue-0 java.lang.ArrayIndexOutOfBoundsException: 1

at cadastro.CadClientes.btnListarActionPerformed(CadClientes.java:227)

at cadastro.CadClientes.access$300(CadClientes.java:36)

at cadastro.CadClientes$5.actionPerformed(CadClientes.java:110)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

at java.awt.Component.processMouseEvent(Component.java:6504)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)

at java.awt.Component.processEvent(Component.java:6269)

at java.awt.Container.processEvent(Container.java:2229)

at java.awt.Component.dispatchEventImpl(Component.java:4860)

at java.awt.Container.dispatchEventImpl(Container.java:2287)

at java.awt.Component.dispatchEvent(Component.java:4686)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)

at java.awt.Container.dispatchEventImpl(Container.java:2273)

at java.awt.Window.dispatchEventImpl(Window.java:2713)

at java.awt.Component.dispatchEvent(Component.java:4686)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)

at java.awt.EventQueue.access$000(EventQueue.java:101)

at java.awt.EventQueue$3.run(EventQueue.java:666)

at java.awt.EventQueue$3.run(EventQueue.java:664)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)

at java.awt.EventQueue$4.run(EventQueue.java:680)

at java.awt.EventQueue$4.run(EventQueue.java:678)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Nicolas_Fernandes
  • Coloca um ponto-e-vírgula depois no final dessa linha:
ListaBean entidadeBean;
  • Você está passando a variável entidadeBean como parâmetro no modelo. Por isso não vai. Você deve passar a entidadeLista, que é a coleção.
    Toma cuidado, se atente a esses pequenos erros que custam um bom tempo da gente!
F

Já está com ; e também estou usando entidadeLista

erro:

method add in class com.towel.swing.table.ObjectTableModel cannot be applied to given types;

required: cadastro.ListaBean

found: java.util.List<cadastro.ListaBean>

reason: actual argument java.util.List<cadastro.ListaBean> cannot be converted to cadastro.ListaBean by method invocation conversion
BufferedReader bufferedReader = new BufferedReader(new FileReader("C:/Aqua/Agenda.txt"));  
    
        List<ListaBean> entidadeLista = new ArrayList<ListaBean>();  
        ListaBean entidadeBean;
  
        String[] entidadeDados;  
        String entidadeLinha;  
  
        while (bufferedReader.ready()) {  
      
            entidadeLinha = bufferedReader.readLine();  
            entidadeDados = entidadeLinha.split(";");  
      
            entidadeBean = new ListaBean();  
            entidadeBean.setNome(entidadeDados[0] == null ? "" : entidadeDados[0]);  
            entidadeBean.setTelefone(entidadeDados[1] == null ? "" : entidadeDados[1]);  
            entidadeLista.add(entidadeBean);  
        }     
  
        ObjectTableModel<ListaBean> model = new ObjectTableModel<ListaBean>(ListaBean.class, "nome, telefone");  
        model.add(entidadeLista);  
        jTable1.setModel(model);
F

Essa é minha ListaBean

package cadastro;

/**
 *
 * @author Frederico
 */
public class ListaBean {
    public ListaBean() {
    }
       private String nome;
       private String telefone;

    /**
     * @return the codigo
     */
    public String getnome() {
        return nome;
    }

    /**
     * @param codigo the codigo to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the nome
     */
    public String getTelefone() {
        return telefone;
    }

    /**
     * @param nome the nome to set
     */
    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    
    /**
     * @return the populacao
     */
    
}
[code]
F

Postei minha ListaBean…

F

Alguém pra ajudar, não estou entendendo o que acontece…

Criado 27 de janeiro de 2012
Ultima resposta 30 de jan. de 2012
Respostas 16
Participantes 2