Duvida com Matriz

Galera, estou tentando popular um jTable porem esta dando um erro de sintaxe dentro do meu for…

Não conseguir localizar, já que eu nunca mexi com matrizes em java…

Alguem sabee?

[code]

public void listarFazendas(){
List lista = bo.listar();
JTable table;
setLayout(new FlowLayout());
String[] columnNames = {“ID”, “Nome”, “Tamanho”};
Object[][] data = null;

    for(int i = 0; i < lista.size(); i++){
         data = { // aparece erro de sintaxe.. (illegal start of expression)
            {
             lista.get(i).getId();
             lista.get(i).getNome(); 
             lista.get(i).getTamanho();
            }
         };
    }
   
    table = new JTable(data, columnNames);
    table.setPreferredScrollableViewportSize(new Dimension(500, 50));
    table.setFillsViewportHeight(true);
    
    JScrollPane scrollPane = new JScrollPane(table);
    add(scrollPane);
}[/code]

vlllw =D

A sintaxe que você colocou não é válida.

Isso só pode ser feito na inicialização da matriz. Dentro do for, você terá que usar os índices.

Cara, consegui arrumar a sintaxe, mas esta dando, ele esta exibindo a tabela varias vezes, tipo criando varias tabela, isso porque eu estou colocando para ele criar a tabela dentro do for, mas se eu tirar dá erro na hora de declarar a matriz…


package br.com.fmu.action;

import br.com.fmu.bean.FazendaBean;
import br.com.fmu.bo.FazendaBo;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class Fazenda extends JFrame{
    
    private final FazendaBo bo = new FazendaBo();
    private JTable table;
    
    public Fazenda(){
        List<FazendaBean> lista = bo.listar();
        
        setLayout(new FlowLayout());
        String[] columnNames = {"ID", "Nome", "Tamanho"};
        for(int i = 0; i < lista.size(); i++){
            for (int j = 0; j < lista.size(); j++) {
                Object[][] data =  {{
                    lista.get(i).getId(),
                    lista.get(i).getNome(), 
                    lista.get(i).getTamanho()
                }};
                table = new JTable(data, columnNames);
                table.setPreferredScrollableViewportSize(new Dimension(500, 50));
                table.setFillsViewportHeight(true);
                JScrollPane scrollPane = new JScrollPane(table);
                add(scrollPane);
            }
        }
        
    }
    /**
     * @descritpion Monta a tabela junto com o metodo construtor
     */
    public void listarFazendas(){
        Fazenda gui = new Fazenda();
        gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        gui.setSize(600,200);
        gui.setVisible(true);
        gui.setTitle("Lista de Fazendas"); 
    }
}

Alguem sabe pq?

Por que sua criação da tabela está dentro do for. Crie a tabela fora e só adicione linhas dentro do for.

Além disso, convém criar seu próprio TableModel, ao invés de trabalhar com Object[][]. Veja o link ao lado do texto em vermelho da minha assinatura para obter várias referências de como.