JTable добавление новой строки - PullRequest
2 голосов
/ 24 февраля 2011

У меня есть JTable с 5 строками на момент разработки. Теперь я должен добавить больше строк, поскольку я иду динамически. Я получаю массив из связанной ошибки исключения, когда я добавляю больше строк. Как мне решить эту проблему?

item_list = new javax.swing.JTable();  
item_list.setModel(new javax.swing.table.DefaultTableModel(  
    new Object [][] {  
        {null, null, null},  
        {null, null, null},  
        {null, null, null},  
        {null, null, null}  
    },  
    new String [] {  
        "No.", "Description", "Cost"  
    }  
) {  
    Class[] types = new Class [] {  
        java.lang.Integer.class, java.lang.String.class, java.lang.Float.class  
    };

    public Class getColumnClass(int columnIndex) {  
        return types [columnIndex];  
    }  
});  
item_list.getColumnModel().getColumn(0).setPreferredWidth(30);  
item_list.getColumnModel().getColumn(1).setPreferredWidth(100);  
item_list.getColumnModel().getColumn(2).setPreferredWidth(50);  
jScrollPane2.setViewportView(item_list);

Ответы [ 3 ]

4 голосов
/ 24 февраля 2011

это работает для меня

import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;

public class Grow extends JFrame {

    private static final Object[][] rowData = {{"Hello", "World"}};
    private static final Object[] columnNames = {"A", "B"};

    private JTable table;
    private DefaultTableModel model;

    public Grow() {
         Container c = getContentPane();
         c.setLayout(new BorderLayout());

         model = new DefaultTableModel(rowData, columnNames);
         table = new JTable();
         table.setModel(model);
         c.add(new JScrollPane(table), BorderLayout.CENTER);
         JButton add = new JButton("Add");
         c.add(add, BorderLayout.SOUTH);
         add.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent ae) {
                 model.addRow(rowData[0]);
             }
         });
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         pack(); 
    }

    public static void main(String[] args) {
        Grow g = new Grow();
        g.setLocationRelativeTo(null);
        g.setVisible(true);
    }
}
4 голосов
/ 10 августа 2012

Полагаю, у вас есть таблица с шестью столбцами. Следуйте этому коду, он добавит новую строку в уже существующую таблицу

DefaultTableModel defaultModel = (DefaultTableModel) table.getModel();
        Vector newRow = new Vector();
        newRow.add("Total Amount Spend");
        newRow.add(TotalAmt);
        newRow.add(Apaid);
        newRow.add(Bpaid);
        newRow.add(Cpaid);
        newRow.add(Dpaid);
        defaultModel.addRow(newRow); 

Где таблица JTable = новая таблица JTable (data, columnNames);

3 голосов
/ 24 февраля 2011

DefaultTableModel имеет метод addRow (...), который вы должны использовать.

Если вам нужна дополнительная помощь, опубликуйте SSCCE , который демонстрирует проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...