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)?[code]String[] columnData = new String [] {
“Name”, “Domain”, “Adress”, “MAC”, “Region”
};
String[][] rowData = new String [][]{
//??????
};
DefaultTableModel model = new DefaultTableModel(rowData, columnData);
JTable table = new JTable(model);[/code]
[code] 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); [/code]
[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"});
}
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
[quote=Metaleiro][color=darkblue]Eu faço dessa forma :[/color]
[code]
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"});
}
[/code][/quote]
Só exibe o nome das colunas.
[color=darkblue]No final desse tutorial tem até os sources para baixar : [/color]
How to Use Tables