0

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

我有一个 jTable选项卡,只有一行和一列、按钮和 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

单元格应该是空的。

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

4

3 回答 3

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

这会工作..

于 2015-05-17T18:32:08.960 回答
0

我认为(我没有检查过)您的 JTable 尝试添加一行,但由于您的addColumn(null).

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

于 2015-05-17T18:23:56.273 回答
0

根据我的推断,您希望将变量n用作 int。该getText()方法将值作为字符串返回,并且该valueOf()方法将字符串作为字符串返回。valueOf()用于与您想要的完全相反的情况,例如将 int 转换为字符串。您应该改用此 Stackoverflow 问题Integer.parseInt()中概述的内容。这将有望摆脱越界异常。

于 2015-05-17T18:36:13.853 回答