标题:关于Jtable的一个问题,想不出哪里出错。求解
只看楼主
LHH744168227
Rank: 1
等 级:新手上路
帖 子:16
专家分:2
注 册:2015-1-18
结帖率:75%
已结贴  问题点数:10 回复次数:2 
关于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);就没有问题。
希望得到帮助~不禁感激。
搜索更多相关主题的帖子: public import 
2015-05-25 22:34
lianren879
Rank: 2
等 级:论坛游民
帖 子:1
专家分:10
注 册:2015-5-26
得分:10 
columns长度是8
columnWidth[]长度是7
然后就越界了
2015-05-26 00:57
LHH744168227
Rank: 1
等 级:新手上路
帖 子:16
专家分:2
注 册:2015-1-18
得分:0 
回复 2楼 lianren879
谢谢~确实是这个问题。我是模仿书本的代码写的,没留意到书本会出错。十分感谢
2015-05-26 12:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-445769-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.149450 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved