在一个循环中将行和列添加到 jTable

add row and column to jTable in one loop

我正在使用 NetBeans IDE,语言 Java,主要 class 是 JFrameForm。

我有一个 jTable tab,只有一行和一列、按钮和 jTextField en,其中类型应该是整数。输入变量 n.

我需要创建具有 n 行和 n 列的矩阵。所以矩阵的 n x n 维度作为 jTable。

点击按钮后,变量n将被保存为维度,循环将开始添加列和行直到n

代码如下:

private void sendMouseClicked(java.awt.event.MouseEvent evt) {                                    
        DefaultTableModel model = (DefaultTableModel) tab.getModel();

        String sn=en.getText();
        int n=Integer.valueOf(sn);

        for(int j=2;j<=n;j++){
            model.addColumn(null); // I know this is wrong
            model.addRow(new Object[]{test.getText()+j});
            test.setText(test.getText()+j);
        }
    }         

我收到错误

线程异常 "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1

单元格应为空。

请帮我输入栏目。那里的对象是什么?

我认为(我没有检查)你的 JTable 试图添加一行,但它没有任何列,因为你 addColumn(null).

为什么不直接 model.addColumn(""); 使用空字符串来添加一个空单元格?

将列名设置为 JTable,然后在 JTable 中添加行..

private void sendMouseClicked(java.awt.event.MouseEvent evt) {                                    
    String sn=en.getText();
    int n=Integer.valueOf(sn);
    java.util.Vector columns = new java.util.Vector();
    columns.add("Your Column Name");
    java.util.Vector rows = new java.util.Vector();
    for(int j=2;j<=n;j++){
        java.util.Vector row = new java.util.Vector();
        row.add(test.getText()+j);
        rows.add(row);
        test.setText(test.getText()+j);
    }
    DefaultTableModel model = new DefaultTableModel(rows, columns);
    tab.setModel(model);
}

这会起作用..

根据我的推断,您想将变量 n 用作 int。 getText() 方法将 return 值作为字符串,valueOf() 方法将 return 字符串作为字符串。 valueOf() 用于 the exact opposite of what you want, converting an int for example into a string. You should use Integer.parseInt() instead outlined in this Whosebug question。这将有望摆脱越界异常。