Tuesday, April 6, 2010

Using JTable

JTable is the component which helps us to display the multi columned data. This post is about fetching database data and displaying it using JTable.
First we will design our Frame
public class MyFrame extends JFrame
{
 private JTable table;
 private JScrollPane jsp;
 public MyFrame()
 {
  super("MyFrame");
  setSize(400,400);
  setDefaultCloseOperation(EXIT_ON_CLOSE);
  setLocationRelativeTo(null);
  initMyFrame();
  setVisible(true);
 }
 private void initMyFrame()
 {
  setLayout(new BorderLayout());
  table=new JTable();
  jsp=new JScrollPane(table);
  add(jsp,BorderLayout.CENTER);


  // database connection and remaining code will go here
 }
 public static void main(String args[])
 {
  new MyFrame();
 }
}



Now we are ready with our frame which contains JTable, but our table does not contains any data.
So we need to establish the database connection, for this I am using PostgreSQL as backend.
Following code is for connecting to database
try
{
 Class.forName("org.postgresql.Driver");
 Connection con=DriverManager.getConnection("jdbc:postgresql://localhost:5432/mydatabase","postgres","postgres");
}catch(Exception e)
{
 System.out.println("Failed to connect to database");
 e.printStackTrace();
}
Now we have established the database connection and its time to fetch data from database and add it to our JTable
try
{
 Statement statement=con.createStatement();
 ResultSet rs=statement.executeQuery("select * from mytable");


 Vector cols=new Vector();
 cols.add("Id");
 cols.add("Name");


 Vector data=new Vector();
  while(rs.next())
  {
   Vector v=new Vector();
   v.add(rs.getInt(1));
   v.add(rs.getString(2));
   data.add(v);
  }


 table.setModel(new DefaultTableModel(data,cols));
 table.addNotify();
}catch(Exception e)
{
 e.printStackTrace();
}
In above code as we are using dynamic data for JTable so we are using Vectors, while using Vector first vector
Vector cols=new Vector();
This vector is for the headers which will be displayed in JTable, it can contain only Strings and the second vector
Vector data=new Vector();
Its for data in JTable which can contains collection only not just Strings, and that is the reason why we are adding Vector v to this data vector.
DefaultTableModel is the default table model provided by Java for setting new table model to JTable.
Method addNotify is important while adding or removing data from TableModel, it tells JTable that data has been modified and its time to refresh.

No comments:

Post a Comment

Ads Inside Post