Mega Code Archive

 
Categories / Java by API / Javax Swing Table
 

AbstractTableModel

import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; public class MainClass extends JFrame {   public MainClass() {     super("Dynamic Data Test");     setSize(300, 200);     setDefaultCloseOperation(EXIT_ON_CLOSE);     JTable jt = new JTable(new MarketDataModel(5));     JScrollPane jsp = new JScrollPane(jt);     getContentPane().add(jsp, BorderLayout.CENTER);   }   public static void main(String args[]) {     MainClass mt = new MainClass();     mt.setVisible(true);   } } class MarketDataModel extends AbstractTableModel implements Runnable {   Thread runner;   public MarketDataModel(int initialDelay) {     Thread runner = new Thread(this);     runner.start();   }   double[] data = new double[]{1,2,3,4,5};      String[] headers = { "Symbol", "Price", "Change", "Last updated" };   public int getRowCount() {     return 1;   }   public int getColumnCount() {     return headers.length;   }   public String getColumnName(int c) {     return headers[c];   }   public Object getValueAt(int r, int c) {     return data[c];   }   public void updateStocks() {     for (int i = 0; i < data.length; i++) {       data[i] = Math.random();     }   }   public void run() {     while (true) {       updateStocks();       fireTableRowsUpdated(0, data.length - 1);       try {         Thread.sleep(1000);       } catch (InterruptedException ie) {       }     }   } }