Refresh data in JTable
I need to refresh data from a database being displayed in a JTable every so many seconds. The JTable is in a JInternalFrame added to a JDesktopPane.
Runnable runner =new Runnable(){
publicvoid run(){
String title = ("Operation Alerts");
JFrame frame =new JFrame(title);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
//create desktop
JDesktopPane desktop =new JDesktopPane();
//create table (which is a JInternalFrame)
OpAlertsTable table =new OpAlertsTable(getUser());
//add table to desktop
desktop.add(table);
//pack the table
table.pack();
try{
table.setMaximum(true);
}catch(Exception e){
}
//make table visible
table.setVisible(true);
//add desktop to frame
frame.getContentPane().add(desktop, BorderLayout.CENTER);
frame.setVisible(true);
}
};
EventQueue.invokeLater(runner);
publicclass OpAlertsTableextends JInternalFrame{
private javax.swing.JPanel jContentPane =null;
private JPanel jPanel =null;
private JTable jTable =null;
private JScrollPane jScrollPane =null;
private JLabel txtFleetMgr =null;
private JLabel fleetmgr =null;
private String userid =null;
private String password =null;
private String divcd =null;
private String company=null;
private String usernm =null;
/**
* This is the default constructor
*/
public OpAlertsTable(){
super();
initialize();
}
public OpAlertsTable(String[] args){
super();
setUserid(args[0]);
setPassword(args[1]);
setUsernm(args[2]);
setCompany(args[3]);
setDivcd(args[4]);
initialize();
}
/**
* This method initializes this
*
* @return void
*/
privatevoid initialize(){
this.setSize(300,200);
this.setContentPane(getJContentPane());
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private javax.swing.JPanel getJContentPane(){
if(jContentPane ==null){
jContentPane =new javax.swing.JPanel();
jContentPane.setLayout(new java.awt.BorderLayout());
jContentPane.add(getJPanel(), java.awt.BorderLayout.NORTH);
jContentPane.add(getJScrollPane(), java.awt.BorderLayout.CENTER);
}
return jContentPane;
}
/**
* This method initializes jPanel
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel(){
if (jPanel ==null){
txtFleetMgr =new JLabel();
fleetmgr =new JLabel();
jPanel =new JPanel();
txtFleetMgr.setText("Fleet Manager:");
fleetmgr.setText(getUsernm());
jPanel.add(txtFleetMgr,null);
jPanel.add(fleetmgr,null);
}
return jPanel;
}
/**
* This method initializes jTable
*
* @return javax.swing.JTable
*/
private JTable getJTable(){
if (jTable ==null){
OpAlertTableModel tm =new OpAlertTableModel(getDataList());
jTable =new JTable(tm);
TextAndFlag taf =new TextAndFlag();
RedCellRenderer renderer =new RedCellRenderer(taf);
TableColumnModel model = jTable.getColumnModel();
TableColumn column = model.getColumn(2);
column.setCellRenderer(renderer);
column = model.getColumn(11);
column.setCellRenderer(renderer);
column = model.getColumn(12);
column.setCellRenderer(renderer);
column = model.getColumn(13);
column.setCellRenderer(renderer);
column = model.getColumn(14);
column.setCellRenderer(renderer);
}
return jTable;
}
/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane(){
if (jScrollPane ==null){
jScrollPane =new JScrollPane();
jScrollPane.setViewportView(getJTable());
}
return jScrollPane;
}
private ArrayList getDataList(){
ArrayList data =new ArrayList();
Connection con =null;
try{
DriverManager.registerDriver(new com.ibm.as400.access.AS400JDBCDriver());
con = DriverManager.getConnection("jdbc:as400://as1","lewkim","ch3ap3r");//+ getLocalHostName());
}catch(SQLException e){
e.printStackTrace();
}
try{
String select =" select OATRACNUM, OATRACSTAT, OADRVTYPE, OATMINSTAT, OASTATFLAG," +
" OAPRONUM, OACUSTNUM, OACUSTOMER, OAORIGIN, OANUMSTOPS," +
" OASTOPLOC, OADEST, OACURLOC, OAPROX, OAPROXFLAG, " +
" OAETA, OAETAFLAG, OAMILES, OAMILEFLAG, OAREVENUE, OAREVFLAG" +
"from MOTNAT.OP0700F " +
" where OADIV = '" + getDivcd().trim() +"'" +
"and UCASE(OAFLEETMAN) = '" + getUserid().trim().toUpperCase() +"'" +
"and UCASE(OACM) = '" + getCompany().trim().toUpperCase() +"'" +
"and OAALERT = 'Y'";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(select);
TextAndFlag tmp;
while (rs.next()){
OpAlert alert =new OpAlert();
alert.setTractor(rs.getString(1));
alert.setStatus(rs.getString(2));
alert.setDriverType(rs.getString(3));
tmp =new TextAndFlag();
tmp.setText(rs.getString(4));
if (rs.getString(5).equals("Y"))
tmp.setFlag(true);
alert.setStatusTm(tmp);
alert.setProNbr(rs.getInt(6));
alert.setCustNbr(rs.getInt(7));
alert.setCustomer(rs.getString(8));
alert.setOrigin(rs.getString(9));
alert.setNbrOfStops(rs.getInt(10));
alert.setNextStop(rs.getString(11));
alert.setDestination(rs.getString(12));
alert.setCurrentLoc(rs.getString(13));
tmp =new TextAndFlag();
tmp.setText(rs.getString(14));
if (rs.getString(15).equals("Y"))
tmp.setFlag(true);
alert.setProximity(tmp);
tmp =new TextAndFlag();
tmp.setText(rs.getString(16));
if (rs.getString(17).equals("Y"))
tmp.setFlag(true);
alert.setEta(tmp);
tmp =new TextAndFlag();
tmp.setText(rs.getString(18));
if (rs.getString(19).equals("Y"))
tmp.setFlag(true);
alert.setMiles(tmp);
tmp =new TextAndFlag();
tmp.setText(rs.getString(20));
if (rs.getString(21).equals("Y"))
tmp.setFlag(true);
alert.setRevenue(tmp);
data.add(alert);
}
rs.close();
stmt.close();
}catch(Exception e){
e.printStackTrace();
System.out.println(e.getMessage());
}
return data;
}
public String getCompany(){return company;}
public String getDivcd(){return divcd;}
public String getPassword(){return password;}
public String getUserid(){return userid;}
public String getUsernm(){return usernm;}
publicvoid setCompany(String company){this.company = company;}
publicvoid setDivcd(String divcd){this.divcd = divcd;}
publicvoid setPassword(String password){this.password = password;}
publicvoid setUserid(String userid){this.userid = userid;}
publicvoid setUsernm(String usernm){this.usernm = usernm;}
}

