1. We have moved from vBulletin to XenForo and you are viewing the site in the middle of the move. Though the functional aspect of everything is working fine, we are still working on other changes including the new design on Xenforo.
    Dismiss Notice

Jtable with search option in the columns

Discussion in 'Meet and Greet' started by sathishrajmohan, Jul 7, 2011.

  1. sathishrajmohan

    sathishrajmohan New Member

    Joined:
    Jul 7, 2011
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    0
    Code:
    package main;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.AbstractTableModel;
    import javax.swing.table.TableCellRenderer;
    
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.Dimension;
    import java.awt.GridLayout;
    
    	public class TableSortDemo extends JPanel {
    	// private boolean DEBUG = false;
    
    		public TableSortDemo() {
    		super(new GridLayout(1, 0));
    
    		JTable table = new JTable(new MyTableModel()){
    		public Component prepareRenderer
    		(TableCellRenderer renderer,int Index_row, int Index_col) {
    		Component comp = super.prepareRenderer(renderer, Index_row, Index_col);
    		//even index, selected or not selected
    		if (Index_row % 2 == 0 && !isCellSelected(Index_row, Index_col)) {
    		comp.setBackground(Color.lightGray);
    		} 
    		else {
    		comp.setBackground(Color.white);
    		}
    		return comp;
    		}
    		};
    		table.setPreferredScrollableViewportSize(new Dimension(500, 70));
    		table.setFillsViewportHeight(true);
    		table.setAutoCreateRowSorter(true);
    
    		// Create the scroll pane and add the table to it.
    		JScrollPane scrollPane = new JScrollPane(table);
    
    		// Add the scroll pane to this panel.
    		add(scrollPane);
    		}
    
    		class MyTableModel extends AbstractTableModel {
    		private String[] columnNames = { "First Name", "Last Name", "Sport",
    		"# of Years", };
    		private Object[][] data = {
    		{ "Kathy", "Smith", "Snowboarding", new Integer(5) },
    		{ "John", "Doe", "Rowing", new Integer(3) },
    		{ "Sue", "Black", "Knitting", new Integer(2) },
    		{ "Jane1", "White", "Speed reading", new Integer(20) },
    		{ "Jane2", "White", "Speed reading", new Integer(20) },
    		{ "Jane3", "White", "Speed reading", new Integer(20) },
    		{ "Jane4", "White", "Speed reading", new Integer(20) },
    		{ "Jane5", "White", "Speed reading", new Integer(20) },
    		{ "Jane6", "White", "Speed reading", new Integer(20) },
    		{ "Jane7", "White", "Speed reading", new Integer(20) },
    		{ "Jane8", "White", "Speed reading", new Integer(20) },
    		{ "Jane9", "White", "Speed reading", new Integer(20) },
    		{ "Jane10", "White", "Speed reading", new Integer(20) },
    		{ "Jane11", "White", "Speed reading", new Integer(20) },
    		{ "Jane12", "White", "Speed reading", new Integer(20) },
    		{ "Jane13", "White", "Speed reading", new Integer(20) },
    		{ "Jane14", "White", "Speed reading", new Integer(20) },
    		{ "Joe15", "Brown", "Pool", new Integer(10) }
    
    		};
    
    		public int getColumnCount() {
    		return columnNames.length;
    		}
    
    		public int getRowCount() {
    		return data.length;
    		}
    
    		public String getColumnName(int col) {
    		return columnNames[col];
    		}
    
    		public Object getValueAt(int row, int col) {
    		return data[row][col];
    		}
    
    		/*
    		* JTable uses this method to determine the default renderer/ editor for
    		* each cell. If we didn't implement this method, then the last column
    		* would contain text ("true"/"false"), rather than a check box.
    		*/
    		public Class getColumnClass(int c) {
    		return getValueAt(0, c).getClass();
    		}
    
    		/*
    		* Don't need to implement this method unless your table's editable.
    		*/
    		public boolean isCellEditable(int row, int col) {
    		// Note that the data/cell address is constant,
    		// no matter where the cell appears onscreen.
    		if (col < 2) {
    		return false;
    		} else {
    		return true;
    		}
    		}
    
    		/*
    		* Don't need to implement this method unless your table's data can
    		* change.
    		*/
    		public void setValueAt(Object value, int row, int col) {
    		// if (DEBUG) {
    		// System.out.println("Setting value at " + row + "," + col
    		// + " to " + value
    		// + " (an instance of "
    		// + value.getClass() + ")");
    		// }
    
    		data[row][col] = value;
    		// Normally, one should call fireTableCellUpdated() when
    		// a value is changed. However, doing so in this demo
    		// causes a problem with TableSorter. The tableChanged()
    		// call on TableSorter that results from calling
    		// fireTableCellUpdated() causes the indices to be regenerated
    		// when they shouldn't be. Ideally, TableSorter should be
    		// given a more intelligent tableChanged() implementation,
    		// and then the following line can be uncommented.
    		// fireTableCellUpdated(row, col);
    
    		// if (DEBUG) {
    		// System.out.println("New value of data:");
    		// printDebugData();
    		// }
    		}
    		}
    
    		/**
    		* Create the GUI and show it. For thread safety, this method should be
    		* invoked from the event-dispatching thread.
    		*/
    		private static void createAndShowGUI() {
    		// Create and set up the window.
    		JFrame frame = new JFrame("TableSortDemo");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    		// Create and set up the content pane.
    		TableSortDemo newContentPane = new TableSortDemo();
    		newContentPane.setOpaque(true); // content panes must be opaque
    		frame.setContentPane(newContentPane);
    
    		// Display the window.
    		frame.pack();
    		frame.setVisible(true);
    		}
    
    		public static void main(String[] args) {
    		// Schedule a job for the event-dispatching thread:
    		// creating and showing this application's GUI.
    		javax.swing.SwingUtilities.invokeLater(new Runnable() {
    		public void run() {
    		createAndShowGUI();
    		}
    		});
    		}
    	}
    
     
    Last edited by a moderator: Jul 7, 2011
  2. anilkamble

    anilkamble New Member

    Joined:
    Mar 12, 2011
    Messages:
    14
    Likes Received:
    0
    Trophy Points:
    0
    Occupation:
    employee
    Location:
    usa
    Home Page:
    Thanks for sharing this nice info with us.
     

Share This Page