import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.TimerTask;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
import javax.swing.table.DefaultTableModel;
/*
* JTableExample.java
*
* Created on 31. März 2004, 20:33
*/
/**
*
* @author Administrator
*/
public class JTableExample extends JFrame {
// Variables declaration - do not modify
private JButton btnAddRows, btnStop;
private JPanel btnPanel;
private JPanel jPanel1;
private JScrollPane scrollPane;
private JTable table;
private DefaultTableModel model;
private ArrayList rows;
private Timer timer;
private TimerTask timerTask;
private String[] columnHeaders = new String[] { "A", "B", "C", "D" };
// End of variables declaration
/** Creates new form JTableExample */
public JTableExample() {
initComponents();
}
private void initComponents() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridBagConstraints gridBagConstraints;
jPanel1 = new JPanel();
btnPanel = new JPanel();
btnAddRows = new JButton();
btnStop = new JButton("Stop");
scrollPane = new JScrollPane();
table = new JTable();
getContentPane().setLayout(new FlowLayout());
setTitle("JTableExample");
setResizable(false);
jPanel1.setLayout(new GridBagLayout());
jPanel1.setBackground(new Color(102, 153, 255));
jPanel1.setMinimumSize(new Dimension(320, 240));
jPanel1.setPreferredSize(new Dimension(320, 240));
btnPanel.setBackground(new Color(255, 153, 0));
btnPanel.setMinimumSize(new Dimension(320, 50));
btnPanel.setPreferredSize(new Dimension(320, 50));
btnAddRows.setText("Add new Rows (smooth)");
btnAddRows.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
btnAddRowsActionPerformed(evt);
}
});
btnStop.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (timer != null) {
System.out.println("Timer stopped....");
timer.stop();
}
}
});
btnPanel.add(btnAddRows);
btnPanel.add(btnStop);
gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
jPanel1.add(btnPanel, gridBagConstraints);
scrollPane.setMinimumSize(new Dimension(320, 190));
scrollPane.setPreferredSize(new Dimension(320, 190));
rows = new ArrayList(4) {
{
add(new Object[] { "A1", "B1", "C1", "D1" });
add(new Object[] { "A2", "B2", "C2", "D2" });
add(new Object[] { "A3", "B3", "C3", "D3" });
add(new Object[] { "A4", "B4", "C4", "D4" });
}
};
model = new DefaultTableModel(transform(rows), columnHeaders);
table.setModel(model);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
scrollPane.setViewportView(table);
jPanel1.add(scrollPane, new GridBagConstraints());
getContentPane().add(jPanel1);
//timerTask = new TimerTask();
pack();
}
/**
* @param rows
*/
private Object[][] transform(ArrayList rows) {
// TODO Auto-generated method stub
Object[][] oa =
new Object[rows.size()][((Object[]) rows.get(0)).length];
for (int i = 0; i < oa.length; i++) {
for (int j = 0; j < oa[i].length; j++) {
oa[i][j] = ((Object[]) rows.get(i))[j];
}
}
return oa;
}
private void btnAddRowsActionPerformed(ActionEvent evt) {
// Add your handling code here:
System.out.println(("Starting timer..."));
timer = new Timer(1000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
int cnt = rows.size();
System.out.println("Adding Row " + ++cnt);
rows.add(
new Object[] {
"A" + cnt,
"B" + cnt,
"C" + cnt,
"B" + cnt });
table.setModel(
new DefaultTableModel(transform(rows), columnHeaders));
table.updateUI();
}
});
timer.start();
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
new JTableExample().show();
}
}