码迷,mamicode.com
首页 > 其他好文 > 详细

Table addColumn 引发的 ArrayOutOfBoundsException

时间:2014-09-12 04:39:42      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   ar   for   2014   

讲一下我这几天一直找不到原因的Exception, 如题,要多加一列时,出现ArrayOutOfBoundsException。

先上一下我要的效果图,第五列是新加的。

bubuko.com,布布扣

而且问题非常之“诡异”, 只出现在我已选定某行后, 才发生(假如未选定任何一行,是不会出现Exception的)

解决问题原来很简单,是ListSelectionEvent 和 tableModelEvent 那里需要多加个IF, 来排除 addColumn时对它们的影响。

那么就是这样:

 1 Public class myScrollPane extends JScrollPane implements ListSelectionListener {
 2     /**
 3      * 
 4      */
 5     private static final long serialVersionUID = 1L;
 6     static JTable table;
 7     private DefaultListSelectionModel selectionModel;
 8     private static DefaultTableModel tableModel;
 9     private static Vector<Object> data = new Vector<Object>();
10     private static Vector<String>  column_names = new Vector<String>();
11     myScrollPane(){
12         super();
13         //database for table
14         .....
15 
16         tableModel = new DefaultTableModel(){
17             private static final long serialVersionUID = 1L;
18 
19             public Class<?> getColumnClass(int column) {
20                 return (column==4)?(Boolean.class):(String.class);
21             }
22             
23         };
24         
25         tableModel.setDataVector(data, column_names);
26         table = new JTable(tableModel);
27         table.setModel(tableModel);
28         
29         tableModel.addTableModelListener(new TableModelListener(){
30             public void tableChanged(TableModelEvent arg0) {
31                 //event‘s column == -1 occurs when adding a new column
32                 if (arg0.getColumn()!=-1){
33                     int Row = arg0.getFirstRow();
34                     int Col = arg0.getColumn();
35                     String new_value = table.getValueAt(Row, Col).toString() ;
36                     proof_main.libreria.update_records(Row, Col, new_value);
37                     
38                 }
39             }
40             
41         });
42         
43         
44         setViewportView(table);
45         //setting scrollpane
46         setVerticalScrollBarPolicy(VERTICAL_SCROLLBAR_ALWAYS);
47         setHorizontalScrollBarPolicy(HORIZONTAL_SCROLLBAR_AS_NEEDED);
48         
49         selectionModel = new DefaultListSelectionModel();
50         selectionModel.addListSelectionListener(this);
51         selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
52         table.setSelectionModel(selectionModel);
53     }
54 
55     public void valueChanged(ListSelectionEvent e) {
56         int selectedRow = table.getSelectedRow();
57         if (selectedRow!= (-1)) Main_panel.research_and_infoPanel.displayInfo(selectedRow);
58         
59     }

也就是第32行和第57行。

Table addColumn 引发的 ArrayOutOfBoundsException

标签:style   blog   http   color   io   os   ar   for   2014   

原文地址:http://www.cnblogs.com/Portawai/p/3967606.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!