i) My Table contains no of columns and a jcheckbox i the last column.
ii) I am using a combobox to select certain value.
iii) based on the value of combo box the jbutton loads the data into the table.
iv) when i reload the data into the table, the new data gets displayed in jtable.
v) The problem is that, When I press the Jcheckbox, the old data is getting displayed in jtable.
code is as below:

public class aap2 extends JFrame {
	      @SuppressWarnings({ "unchecked", "rawtypes" })
	      static JComboBox year = new JComboBox(new Object[]
			  {"2012-13", "2013-14", "2014-15", "2015-16","2016-17","2017-       
                           18","2018-19"});
	@SuppressWarnings({ "unchecked", "rawtypes" })
	static JComboBox division = new JComboBox(new Object[]
			  {"Name", "address","profession","others"});
	JComboBox schemetype = new JComboBox(new Object[]
			  {});
	
	JButton showschemes = new JButton("Show Schemes");
	
	static ResultSet rs;
	Connection con;
	Statement st;
	static JPanel panel = new JPanel();
	static JPanel panel1 = new JPanel();
	static JPanel panel2= new JPanel();
	static JPanel panel3= new JPanel();
	static JPanel panel4= new JPanel();
	static JPanel panel5= new JPanel();
	UIManager ui= new UIManager();
	static int columns;
	static int sel[];
	JTable table;
	DefaultTableModel dtm;
	public aap2(){
		division.setMaximumRowCount(5);
		year.setMaximumRowCount(5);
		year.setForeground(Color.blue);
		year.setBackground(Color.white);
		year.setSelectedItem("2009-10");
	
		setBounds(00,40,1020,700);
		Color c= new Color(160,200,100);
		getContentPane().setBackground(c);
		Color c3= new Color(0,50,50,2);
		panel1.setBackground(c3);
		panel2.setBackground(c3);
		panel.setBackground(c);
		panel.setBorder(new TitledBorder(new LineBorder(Color.white,1),""));
		panel.setLayout(new GridBagLayout());
		GridBagConstraints gc= new GridBagConstraints();
		
		panel1.setLayout( new GridBagLayout());
		GridBagConstraints gc1 = new GridBagConstraints();
		
		gc1.gridx=0;
		gc1.gridy=0;
		panel1.add( new JLabel("Financial Year"),gc1);
		gc1.insets= new Insets(1,10,1,10);
		gc1.gridx=1;
		gc1.gridy=0;
		panel1.add(year,gc1);
		
		gc1.gridx=4;
		gc1.gridy=0;
		panel1.add( new JLabel("Division"),gc1);
		gc1.gridx=5;
		gc1.gridy=0;
		panel1.add(division,gc1);
		gc.gridx=0;
		gc.gridy=0;
		panel.add(panel1,gc);
		
			
		JPanel p2= new JPanel();
		gc.gridx=0;
		gc.gridy=4;
		p2.setBackground(c3);
		panel.add(p2,gc);
		
		panel3.setLayout( new GridBagLayout());
		GridBagConstraints gc3 = new GridBagConstraints();
		gc3.insets= new Insets(30,10,1,10);
		gc3.gridx=0;
		gc3.gridy=2;
		panel3.add(showschemes,gc3);
		showschemes.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e){
				
					showschemsActionPerformed(e);
				}
		});
		
		gc.gridx=0;
		gc.gridy=5;
		panel3.setBackground(c3);
		panel.add(panel3,gc);
		
		add(panel, BorderLayout.NORTH);
		setUndecorated(true);
		getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);  
				
			}

	   public void showschemsActionPerformed(ActionEvent e) {
		
			showtable();
		
	     }
            public void showtable() {
	    final Vector<String> columnNames = new Vector<String>();
		final Vector<Vector<Object>> data = new Vector<Vector<Object>>();
			  try{
		      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		         System.out.println("Driver loaded");

		         // Establish a connection
		       con= DriverManager.getConnection
		           ("jdbc:odbc:ysr");
		         System.out.println("Database connecteddddd");

		         // Create a statement
		         st = con.createStatement();
		          ResultSet rs = st.executeQuery("SELECT * FROM ysr2011 where=  
                          '"+division.getSelectedItem()+"' ");
		     
		         ResultSetMetaData md = rs.getMetaData();
		      
		columns = md.getColumnCount();
		System.out.println("col" +(columns+1));
		for (int i = 1; i <= columns; i++) {
		columnNames.addElement( md.getColumnName(i) );
		}
		columnNames.addElement("Save");
		while (rs.next()) {
		Vector<Object> row = new Vector<Object>(columns);
		for (int i = 1; i <= columns; i++) { 
		row.addElement( rs.getObject(i) );
		}
		row.addElement(new Boolean(false));
		data.addElement( row );
		}
		  rs.close();
                 con.close();
                 st.close();
		  }
		catch(Exception e1){}
              dtm = new DefaultTableModel(data, columnNames) {
	      public Class getColumnClass(int col) {
	    	if(col==columns){
	    		return Boolean.class;
	    	}else{
	    		return String.class;
	    	}
	    	}
	    
	    public boolean isCellEditable(int rowIndex, int colIndex) {
	    return (colIndex == columns);
	            }
	        };
	   
	       dtm.fireTableDataChanged();
	       table= new JTable(dtm); ; 
	  
		table.setFont(new Font(" Arial",Font.PLAIN,12));
		table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		table.setAutoCreateRowSorter(true);
		JTableHeader header = table.getTableHeader();
		header.setBackground(Color.yellow);
		table.setRowSelectionAllowed(false);
		header.setFont(new Font(" Arial",Font.BOLD,12));
		JScrollPane scrollPane = new JScrollPane(table);
		JButton button= new JButton("Save");
		button.addActionListener(new ActionListener() {
		 public void actionPerformed(ActionEvent e) {
	         for (int row = 0; row < table.getRowCount(); row++) {
	                Boolean b = ((Boolean) table.getValueAt(row, columns));
	                 if (b.booleanValue()) {
	                    System.out.print("row " + row + " is " + b + ": ");
	                     for (int col = 0; col < table.getColumnCount(); col++) {
	                        System.out.print(table.getValueAt(row, col) + " ");
	                       }
	                       System.out.println();
	                  }
	              }
	        
	           }
	        });
		
		JPanel buttonpanel= new JPanel();
		buttonpanel.add(button);
		add(scrollPane,BorderLayout.CENTER);
		add(buttonpanel,BorderLayout.SOUTH);
		Color c1= new Color(160,200,100);
		table.setBackground(c1);
		buttonpanel.setBackground(c1);
		setBackground(c1);
		setVisible(true);  
		}
	
  
	public static void main(String args[]){
	new aap2();
          }
	
        }

Recommended Answers

All 2 Replies

there are lots of good workaround for JTable and Database, I'd suggest to search for ResultsetTableModel or TableFromDatabase

i agree 'mkobel' its a better solution of this problem are you try it.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.