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

时间:2015-05-17 18:03:28

标签: java jtable jform

我在NetBeans IDE中工作,语言Java,主要类是JFrameForm。

我有一个jTable 标签只有一行和一列,按钮和jTextField en ,其中type应该是整数。输入是变量 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);
        }
    }         

我收到了错误

线程中的异常&#34; AWT-EventQueue-0&#34; java.lang.ArrayIndexOutOfBoundsException:1

细胞应该是空的。

请帮我输入专栏。什么是对象?

3 个答案:

答案 0 :(得分:1)

将列名设置为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);
}

这将有效..

答案 1 :(得分:0)

我认为(我没有检查过)你的JTable尝试添加一行,但由于你的addColumn(null)而没有任何列。

为什么不用空字符串model.addColumn("");添加空单元格?

答案 2 :(得分:0)

根据我的推断,您希望将变量decodeXhrResponse用作int。 n方法将值作为字符串返回,getText()方法将字符串作为字符串返回。 valueOf()用于所需的the exact opposite,例如将int转换为字符串。您应该使用this Stackoverflow question中概述的valueOf()。这将有望摆脱出界的例外。