关于Jtable的一个问题,想不出哪里出错。求解
先献上代码:import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
@SuppressWarnings("serial")
public class ArrayCreateTable extends JFrame {
JTable table;
JScrollPane scrollPane;
public ArrayCreateTable() {
// TODO Auto-generated constructor stub
scrollPane = new JScrollPane(this.getable(),
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
this.add(scrollPane);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
private JTable getable() {
if (table == null) {
table = new JTable();// 建立表格
// 定义列名数组
String[] columns = { "ID", "姓名", "性别", "出生地", "出生日期", "邮箱", "居住地",
"备注" };
// 定义列宽数组
int columnWidth[] = { 10, 30, 10, 40, 70, 60, 70 };
// 创建表格数据模型
DefaultTableModel model = new DefaultTableModel(columns, 15);// columns存放列名称的数组,生成15行空白数据
table.setModel(model);// 设置表格的数据模型
TableColumnModel columnModel = table.getColumnModel();// 获取列模型
int count = columnModel.getColumnCount();// 获取列的数量
for (int i = 0; i < count; i++) {
TableColumn column = columnModel.getColumn(i);// 获取列对象
column.setPreferredWidth(columnWidth[i]);// 以数组元素来设置列宽
}
}
return table;
}
public static void main(String[] args) {
new ArrayCreateTable();
}
}
运行不了错误信息如下:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
at L300.ArrayCreateTable.getable(ArrayCreateTable.java:39)
at L300.ArrayCreateTable.<init>(ArrayCreateTable.java:16)
at L300.ArrayCreateTable.main(ArrayCreateTable.java:45)
我发现如果把 column.setPreferredWidth(columnWidth[i]);// 以数组元素来设置列宽
改为column.setPreferredWidth(10);就没有问题。
希望得到帮助~不禁感激。