Заполнение JTable массивом

Я пытаюсь сделать таблицу с несколькими соответствующими массивами, заполняющими информацию по вертикали. Если бы в каждом из моих массивов было только 3 фрагмента данных, приведенный ниже код работал бы отлично:

 import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class TableSample {

    static String[] itemArray = new String[] {"item1","item2","item3"};
    static String[] conditionArray = new String[] {"condition1","condition2","condition3"};
    static String[] locationArray = new String[] {"location1","location2","location3"};

    public static void main(String args[]) {

    JFrame f = new JFrame("JTable Sample");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container content = f.getContentPane();

    Object rows[][] = { { itemArray[0], conditionArray[0], locationArray[0] },
            { itemArray[1], conditionArray[1], locationArray[1] },
            { itemArray[2], conditionArray[2], locationArray[2] } };

    Object columns[] = { "Symbol", "Name", "Price" };
    JTable table = new JTable(rows, columns);
    JScrollPane scrollPane = new JScrollPane(table);
    content.add(scrollPane, BorderLayout.CENTER);
    f.setSize(300, 200);
       f.setVisible(true);
}
}

Тем не менее, каждый из моих массивов имеет 10000 строк, что было бы крайне непрактично, чтобы продолжать заполнять эти строки еще 9997 раз. Я хотел бы создать цикл примерно так: (не работает, но вы получаете представление о том, что я пытаюсь сделать)

for(int i=0;i<itemArray.length;i++)
    {
        Object rows[][]={
                { itemArray[i], conditionArray[i], locationArray[i] }};

    }

1 ответ

Решение

Добавить данные в DefaultTableModel с использованием addRow() метод:

DefaultTableModel model = new DefaultTableModel(columns, 0);

for(int i=0;i<itemArray.length;i++)
{
    Vector row = new Vector(3);
    row.add( itemArray[i] );
    row.add( conditionArray[i] );
    row.add( locationArray[i] );
    model.addRow( row );
}

JTable table = new JTable( model );
Другие вопросы по тегам