2012-06-19 20 views
7

Cómo llenar una tabla J con valores de una lista con un tipo de objeto. Mi código es el siguiente:Rellenar JTable utilizando la lista

String[] columnNames = {"CLASS CODE", 
     "TIME", 
     "DAY", 
     "ROOM", 
     "PROFESSOR"}; 

    List<org.mine.ScheduleAttr> schedule = getStudSched(studNo); 
    DefaultTableModel model = new DefaultTableModel(); 
    table.setModel(model); 

    model.setColumnIdentifiers(columnNames); 

Ya tengo las columnas, la lista vendría de la variable de horario? ¿Cómo puedo poner eso en mi mesa considerando estas columnas?

Respuesta

7

Eche un vistazo a DefaultTableModel. Podría iterar sobre su Lista y crear la matriz de Objeto para cada fila.

for (ScheduleAttr s : schedule) { 
    Object[] o = new Object[5]; 
    o[0] = s.getX(); 
    o[1] = s.getY(); 
    o[2] = s.getZ(); 
    o[3] = s.getA(); 
    o[4] = s.getB(); 
    model.addRow(o); 
} 
+0

está en desuso El DefaultTableModel enlace – Fred37b

4

Se podría usar algo similar a (solo cambiando columns y values):

import java.awt.BorderLayout; 
import java.util.ArrayList; 
import java.util.List; 

import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 
import javax.swing.table.DefaultTableModel; 
import javax.swing.table.TableModel; 

public class TestJFrame extends JFrame { 
    private static final long serialVersionUID = 1L; 

    public static void main(String[] args) { 
     TestJFrame testJFrame = new TestJFrame(); 

     List<String> columns = new ArrayList<String>(); 
     List<String[]> values = new ArrayList<String[]>(); 

     columns.add("col1"); 
     columns.add("col2"); 
     columns.add("col3"); 

     for (int i = 0; i < 100; i++) { 
      values.add(new String[] {"val"+i+" col1","val"+i+" col2","val"+i+" col3"}); 
     } 

     TableModel tableModel = new DefaultTableModel(values.toArray(new Object[][] {}), columns.toArray()); 
     JTable table = new JTable(tableModel); 
     testJFrame.setLayout(new BorderLayout()); 
     testJFrame.add(new JScrollPane(table), BorderLayout.CENTER); 

     testJFrame.add(table.getTableHeader(), BorderLayout.NORTH); 

     testJFrame.setVisible(true); 
     testJFrame.setSize(200,200); 
    } 

} 

El columns no tiene que parecerse a columns.toArray() porque ya tiene una gran variedad de objetos, por lo que es sólo lo utilizan. Al final para usar sus columnas, la instrucción se ve así: TableModel tableModel = new DefaultTableModel(values.toArray(new Object[][] {}), columnNames);

0

probar esto

En primer lugar hacer un iterador

Iterator itr = StringList.iterator(); 



while(itr.hasNext()) { 
       Object element = itr.next(); 
        int y=0; 
        for (y=0; y <=16 ; y++){ 
        table_4.setValueAt(element, y, 0); 

table_4 es el nombre de la tabla a continuación, la fila y la columna en la que desea insertar la cadena

Cuestiones relacionadas