您当前的位置: 首页 >  Java

txwtech

暂无认证

  • 2浏览

    0关注

    813博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 21

txwtech 发布时间:2017-04-20 23:20:26 ,浏览量:2

报错原因:

请看73行备注

java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 21  at java.util.Vector.get(Unknown Source)  at e21_07.MfixedColumnTable$FloatingColumnTableModel.getColumnName(MfixedColumnTable.java:86)  at javax.swing.JTable.addColumn(Unknown Source)  at javax.swing.JTable.createDefaultColumnsFromModel(Unknown Source)  at javax.swing.JTable.tableChanged(Unknown Source)  at javax.swing.JTable.setModel(Unknown Source)  at javax.swing.JTable.(Unknown Source)  at javax.swing.JTable.(Unknown Source)  at e21_07.MfixedColumnTable.(MfixedColumnTable.java:34)  at e21_07.ExampleFrame_07.(ExampleFrame_07.java:39)  at e21_07.ExampleFrame_07.main(ExampleFrame_07.java:13)

package e21_07;
import java.awt.*;
import java.util.*;


import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;


public class MfixedColumnTable extends JPanel {
	private static final long serialVersionUID=1L;
	private JTable fixedColumnTable;
	private FixedColumnTableModel fixedColumnTableModel;
	private JTable floatingColumnTable;
	private FloatingColumnTableModel floatingColumnTableModel;
	private Vector columnNameV;
	private Vector tableValueV;
	private int fixedColumn=1;
	
	public MfixedColumnTable(Vector columnNameV,
			VectortableValueV,int fixedColumn){
		super();
		setLayout(new BorderLayout());
		this.columnNameV=columnNameV;
		this.tableValueV=tableValueV;
		this.fixedColumn=fixedColumn;
		fixedColumnTableModel=new FixedColumnTableModel();
		fixedColumnTable=new JTable(fixedColumnTableModel);
		ListSelectionModel fixed=fixedColumnTable.getSelectionModel();
		fixed.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		fixed.addListSelectionListener(new MListSelectionListener(true));
		floatingColumnTableModel=new FloatingColumnTableModel();
		floatingColumnTable=new JTable(floatingColumnTableModel);
		floatingColumnTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		ListSelectionModel floating=floatingColumnTable
		.getSelectionModel();
		floating.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		MListSelectionListener listener=new MListSelectionListener(false);
		//
		floating.addListSelectionListener(listener); //don't miss this sentence
		JScrollPane scrollPane=new JScrollPane();
		scrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER, fixedColumnTable.getTableHeader());
		JViewport viewport=new JViewport();
		viewport.setView(fixedColumnTable);
		viewport.setPreferredSize(fixedColumnTable.getPreferredSize());
		scrollPane.setRowHeaderView(viewport);
		scrollPane.setViewportView(floatingColumnTable);
		add(scrollPane,BorderLayout.CENTER);
	}
	
	private class FixedColumnTableModel extends AbstractTableModel{
		private static final long serialVersionUID=1L;
		public int getColumnCount(){
			return fixedColumn;
		}
		public int getRowCount(){
			return tableValueV.size();
		}
		public Object getValueAt(int rowIndex,int columnIndex){
			return tableValueV.get(rowIndex).get(columnIndex);
		}
		// missed
		@Override
		public String getColumnName(int columnIndex) {// 返回指定列的名称
			return columnNameV.get(columnIndex);
		}
	}
	
	private class FloatingColumnTableModel extends AbstractTableModel{
		private static final long serialVersionUID=1L;
		public int getColumnCount(){
			return columnNameV.size(); //错误的一行,需要改成下面一行
			//return columnNameV.size() - fixedColumn;
			/*
			 * java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 21
	at java.util.Vector.get(Unknown Source)
	at e21_07.MfixedColumnTable$FloatingColumnTableModel.getColumnName(MfixedColumnTable.java:86)
	at javax.swing.JTable.addColumn(Unknown Source)
	at javax.swing.JTable.createDefaultColumnsFromModel(Unknown Source)
	at javax.swing.JTable.tableChanged(Unknown Source)
	at javax.swing.JTable.setModel(Unknown Source)
	at javax.swing.JTable.(Unknown Source)
	at javax.swing.JTable.(Unknown Source)
	at e21_07.MfixedColumnTable.(MfixedColumnTable.java:34)
	at e21_07.ExampleFrame_07.(ExampleFrame_07.java:39)
	at e21_07.ExampleFrame_07.main(ExampleFrame_07.java:13)

			 * */
			 
		}
		public int getRowCount(){
			return tableValueV.size();
		}
		public Object getValueAt(int rowIndex,int columnIndex){
			return tableValueV.get(rowIndex)
					.get(columnIndex+fixedColumn);
		}
		@Override
		public String getColumnName(int columnIndex){
			return columnNameV.get(columnIndex+fixedColumn);
		}
	}
	private class MListSelectionListener implements ListSelectionListener{
		boolean isFixedColumnTable=true;
		public MListSelectionListener(boolean isFixedColumnTable){
			this.isFixedColumnTable=isFixedColumnTable;
		}
		public void valueChanged(ListSelectionEvent e){
			if(isFixedColumnTable){
				int row=fixedColumnTable.getSelectedRow();
				floatingColumnTable.setRowSelectionInterval(row, row);
			}else{
				int row=floatingColumnTable.getSelectedRow();
				fixedColumnTable.setRowSelectionInterval(row, row);
			}
		}
		
	}

}

关注
打赏
1665060526
查看更多评论
立即登录/注册

微信扫码登录

0.0409s