【问题标题】:add row and column to jTable in one loop一次循环将行和列添加到jTable
【发布时间】:2015-05-17 18:03:27
【问题描述】:

我在 NetBeans IDE 中工作,语言 Java,主类是 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

单元格应该是空的。

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

【问题讨论】:

  • 使用自定义表格模型,这将是最好的方法。
  • 程序中的a是什么?似乎您正在尝试将对象映射到大于数组长度的索引,因为 j 应该小于长度,也许 a 更大?
  • 这只是个错误。我的意思是n
  • 你能给我举个定制模型的例子吗?关联?我第一次听说它(我是初学者)。

标签: java jtable jform


【解决方案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);
}

这会起作用..

【讨论】:

  • 对专栏也有小的编辑工作。 for(int j=2;j&lt;=n;j++){ java.util.Vector column = new java.util.Vector(); column.add(test.getText()+j); columns.add(column); java.util.Vector row = new java.util.Vector(); row.add(test.getText()+j); rows.add(row); test.setText(test.getText()+j); }
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    据我推断,您想将变量 n 用作 int。 getText() 方法将值作为字符串返回,valueOf() 方法将字符串作为字符串返回。 valueOf() 用于您想要的 the exact opposite,例如将 int 转换为字符串。您应该使用Integer.parseInt() 而不是this Stackoverflow question 中的概述。这有望摆脱越界异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-22
      • 2014-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多