Popular JTable

5 respostas
GouverMXT
Estou em dúvida sobre como popular a parte de dados da minha JTable, as colunas está dando certo, mas como faço para inserir as linhas (parte do código com interrogação)?
String[] columnData = new String [] {
                "Name", "Domain", "Adress", "MAC", "Region"
        };
    	
    	
    	
    	String[][] rowData = new String [][]{  
               //??????
  };  
    	
    	DefaultTableModel model = new DefaultTableModel(rowData, columnData);
    	JTable table = new JTable(model);

5 Respostas

Marlon_Meneses
String[] columnData = new String [] {  
                    "Name", "Domain", "Adress", "MAC", "Region"  
            };  
              
              
              
            String[][] rowData = new String [10][5];    
                   rowData[0][0] = "0,0"; //logicamente que isso pode ser feito dinamicamente
                   rowData[0][1] = "0,1";
                   ...
                   rowData[9][4] = "9,4"; 
          
             
           DefaultTableModel model = new DefaultTableModel(rowData, columnData);  
           JTable table = new JTable(model);
Metaleiro

[color=darkblue]Eu faço dessa forma :[/color]

String[] columnNames = { "Quant.","Produto", "Valor" };

        Object[][] data = {,};

        table.setModel(new javax.swing.table.DefaultTableModel(data, columnNames)
            {}
        );

       javax.swing.table.DefaultTableModel dtm = (javax.swing.table.DefaultTableModel)table.getModel();
       
      for (int i = 0; i < 10; i++) {
		                        dtm.addRow(new Object[]{10,"TESTE","10,00"});
      }
ViniGodoy

O primeiro passo é se livrar do DefaultTableModel. Assim você para de duplicar dados, deixa seu código mais fácil, legível e flexível. Se você está usando DefaultTableModel, está perdendo tempo.

Agora, para se livrar dele, é importante entender como o Table funciona, e como implementar seu próprio model. Não é tão difícil como parece (de fato, é mais fácil que usar o DefaultTableModel), mas exige um pouco de dedicação da sua parte. O que você não pode, é não aprender por preguiça.

Os dois artigos seguintes são um ótimo tutorial para TableModel. O primeiro mostra como fazer um TableModel não editável. O segundo, mostra como torna-lo editável. Essa é a maneira correta de se trabalhar com JTable:
http://www.informit.com/articles/article.aspx?p=332278
http://www.informit.com/articles/article.aspx?p=333472

Se você tem problemas com o inglês, pode consultar os tutoriais do GUJ, que trazem o mesmo assunto. Há também esse tópico, com um model implementado de exemplo:
http://www.guj.com.br/posts/list/98452.java#530523

Uma vez entendido isso, o segundo passo é refatorar o seu código. Aqui, se você for um bom programador, será uma tarefa no mínimo divertida. Métodos inteiros serão simplificados, casts serão eliminados, você não trabalhará mais com esses horríveis Object[].

Finalmente, com o recurso dominado, você pode partir para soluções ainda mais elegantes e poderosas, como a demonstrada nesse post:
http://www.guj.com.br/posts/list/100793.java#543532

GouverMXT
Metaleiro:
[color=darkblue]Eu faço dessa forma :[/color]
String[] columnNames = { "Quant.","Produto", "Valor" };

        Object[][] data = {,};

        table.setModel(new javax.swing.table.DefaultTableModel(data, columnNames)
            {}
        );

       javax.swing.table.DefaultTableModel dtm = (javax.swing.table.DefaultTableModel)table.getModel();
       
      for (int i = 0; i < fields.length; i++) {
		                        dtm.addRow(new Object[]{10,"TESTE","10,00"});
      }

Só exibe o nome das colunas.

Metaleiro

[color=darkblue]No final desse tutorial tem até os sources para baixar : [/color]

How to Use Tables

Criado 17 de abril de 2009
Ultima resposta 17 de abr. de 2009
Respostas 5
Participantes 4