在一个循环中将行和列添加到 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。这将有望摆脱越界异常。
我正在使用 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。这将有望摆脱越界异常。