Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JTable添加新行_Java_Swing_Jtable - Fatal编程技术网

Java JTable添加新行

Java JTable添加新行,java,swing,jtable,Java,Swing,Jtable,在设计时,我有一个5行的JTable。现在,我必须动态地添加更多行。当我添加更多行时,我得到数组越界异常错误。我如何解决这个问题 item_list = new javax.swing.JTable(); item_list.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null}, {null, null, null},

在设计时,我有一个5行的JTable。现在,我必须动态地添加更多行。当我添加更多行时,我得到数组越界异常错误。我如何解决这个问题

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);

DefaultTableModel有一个您应该使用的addRow(…)方法

如果您需要更多帮助,请发布演示问题的日志。

这对我很有用

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);
    }
}

我假设你有一个六列的表。 按照下面的代码,它将向已经存在的表追加一个新行

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 table=新的JTable(数据、列名)

您使用的是哪种型号的桌子?DefaultTableModel,您自己制作的?我使用DefaultTableModel。但是我删除了一列并更改了每列的宽度。.阅读API,在那里你可以找到任何类可用的方法。@Deepak,我们不是来给你填鸭式的代码的。你要求在哪里张贴SSCCE,但你没有。您已被要求阅读API,但由于代码未使用addRow(…)方法,因此您似乎还没有阅读。您已经获得了一些工作代码,请查看,如果您不理解,请提出具体问题。将工作代码与您的代码进行比较,看看有什么不同。我的代码只是初始化表,没有向表中添加任何行。我只是在已经创建的模型上放置了值。当我使用getModel()时,我并没有得到我无法理解的疯狂字符串。我使用了getmodel,然后使用返回的模型对象,我尝试使用addRow(),但没有在其中获得addRow()方法。。现在帮帮我…@Deepak,我们帮不了你。你发布的代码甚至没有编译。我再重复一遍。您已经收到了显示如何使用addRow(…)方法的工作代码。将工作代码与您的代码进行比较,看看有什么不同。顺便说一句,您不应该使用DefaultTableModel,这是一个令人讨厌的东西