public TableViewPanel(String title) {
    GridBagLayout layout = new GridBagLayout();
    GridBagConstraints constraints = new GridBagConstraints();
    setLayout(layout);
    setBorder(BorderFactory.createTitledBorder(title));
    
    tableModel = new TableDisplay(cols, data);
    myTable = new JTable(tableModel){
    	public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
    	{
    		Component c = super.prepareRenderer(renderer, row, column);

    		// Color row based on values and alternating

    		if (!isRowSelected(row))
    		{
    			c.setBackground(getBackground());
    			
    			int modelRow = convertRowIndexToModel(row);
    			boolean complete = (boolean)getModel().getValueAt(modelRow, 2) &&
    			(boolean)getModel().getValueAt(modelRow, 3) && (boolean)getModel().getValueAt(modelRow, 4)
    			&& (boolean)getModel().getValueAt(modelRow, 5) && (boolean)getModel().getValueAt(modelRow, 6);
    			
    			if (complete) c.setBackground(row % 2 == 0 ? getBackground() : myColors[0]);
    			if (!complete) c.setBackground(row % 2 == 0 ? myColors[1] : myColors[2]);
    		}

    		return c;
    	}
    };
    myTable.setAutoCreateRowSorter(true);
    
    scrollPane = new JScrollPane(myTable);
    
    constraints.gridx = 0; constraints.gridy = 0;
    constraints.gridwidth = 1; constraints.gridheight = 1;
    constraints.fill = GridBagConstraints.BOTH;
    constraints.weightx = 1; constraints.weighty = 1;
    layout.setConstraints(scrollPane, constraints);
    add(scrollPane);
  }