Hello....
This has also been posted at:
http://www.coderanch.com/t/512189/GU...up-dynamically
and
http://forums.oracle.com/forums/thre...59375&tstart=0

I have a single column JTable - where the user may enter integer values. The sum of these values needs to get dynamically updated in a JTextField in a JPanel. How do I do this. Below is my code.

Thanks.....
Code:
 import javax.swing.*;  
 import javax.swing.table.*;  
 import javax.swing.event.*;  
 import javax.swing.table.DefaultTableCellRenderer;  
   
 import java.awt.*;  
 import java.util.*;  
 import java.awt.color.*;  
 import java.awt.event.*;  
   
 public class TableandPanel extends JFrame  
 {  
     public static void main(String[] args)  
     {  
         JFrame frame = new JFrame("Table and Panel");  
                                        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
                                        frame.setSize(100, 300);  
           
                                         frame.setVisible(true);  
         String colHdrA = "Some Values";                 
         TableofSums tableofSums = new TableofSums(10, colHdrA);  
         int sumValue = tableofSums.getSumValues();  
         String sumValueS = String.valueOf(sumValue);  
         SumValuesPanel newPanel = new SumValuesPanel( "Score", sumValueS, "Rank");  
         JPanel thePanel = new JPanel();  
         thePanel.add(new JScrollPane(tableofSums));  
         thePanel.add(newPanel);  
         frame.add(thePanel);  
         frame.pack();  
         frame.setVisible(true);  
     }  
 }  
   
 //--------------------------------JTable class starts here---------------------------  
   
 public class TableofSums extends JPanel implements TableModelListener  
 {  
     public static void main(String[] args)  
      {        
          SwingUtilities.invokeLater(new Runnable()   
             {  
                 public void run()   
                   {             
         JFrame frame = new JFrame("Table");  
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
         frame.setSize(208, 230);  
         //frame.add(new JScrollPane(table));  
            frame.setVisible(true);  
            String colHdrA = "Some Values";                  
            TableofSums tableofSums = new TableofSums(10, colHdrA);  
             frame.setContentPane(tableofSums);  
              //frame.add(new JScrollPane(timerepTable));  
           frame.pack();  
           frame.setVisible(true);  
                     
               }  
            });  
     }  
       
     private int noOfRows = 0;  
     private JTable table;  
     private String colName = null;  
     private int sumValues = 0;  
       
     public TableofSums(int noOfRows, String colName)  
     {  
         this.noOfRows = noOfRows;  
         this.colName = colName;  
         makeTable();          
     }  
       
     private void makeTable()  
     {  
         Object columns[] = new Object[] {"<html><center>" + this.colName + "</center></html>"};  
           
         Object[][] data = new Object[noOfRows][1];  
           
         for (int i = 0; i<noOfRows; i++)  
            {                
               data[i][0] = new Integer(0);              
            }  
         DefaultTableModel model = new DefaultTableModel(data, columns);  
            model.addTableModelListener(this);  
            table = new JTable(model)  
            {  
               @Override  
               public boolean isCellEditable(int row, int column)   
               {  
                   switch (column)   
                   {  
                     case 0: return true;  
                   }  
                 return false;  
               }  
                 
               @Override  
               public Class<?> getColumnClass(int columnIndex)   
               {  
                  switch (columnIndex)   
                  {  
                     case 0: return Integer.class;  
                  }  
                  return null;  
               }  
            };  
            table.setRowHeight(25);  
            table.setDefaultRenderer(Integer.class, new SomeCellRenderer());  
             this.add(new JScrollPane(table));  
     } 
//-------------------------tablemodellistener---------------------------------//
 
      public void tableChanged(TableModelEvent e)  
                     {  
       System.out.println(e.getSource());  
       if(e.getType() == TableModelEvent.UPDATE)  
       {  
           int row = e.getFirstRow();  
           int column = e.getColumn();  
           TableModel model = table.getModel();  
           sumValues = 0;  
           for (int i=0; i<noOfRows; i++)  
           {  
             int intValue = (Integer)model.getValueAt(i, column);  
             sumValues += intValue;  
           }  
         System.out.println ("row modified: " + row + " sumValues: " + sumValues);  
       }  
         
      }  
 
//---------------------------tablecellrenderer-----------------------------------------------       
      public class SomeCellRenderer extends JLabel  implements TableCellRenderer   
         {  
               
           public SomeCellRenderer()   
           {   
               setOpaque(true);          
           }  
   
           public Component getTableCellRendererComponent(JTable table, Object  
                   value, boolean isSelected, boolean hasFocus, int row, int column)   
             {  
               String cellValue = String.valueOf(value);  
               this.setText(cellValue);  
               this.setBackground(Color.LIGHT_GRAY);  
               this.setHorizontalAlignment(SwingConstants.CENTER);  
               return this;  
             }  
         }  
      public int getSumValues()  
      {  
          return sumValues;  
      }  
 }  
   
   
 //-------------------------Panel Class Starts here-------------------------------------  
   
 public class SumValuesPanel extends JPanel  
 {  
     /** 
      * @param args 
      */  
     public static void main(String[] args)  
     {  
         JFrame.setDefaultLookAndFeelDecorated(true);  
         JFrame frame = new JFrame("SumValuesPanel");  
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
         SumValuesPanel newContentPane = new SumValuesPanel( "Score", "XX.XX", "Rank");  
           
         frame.setContentPane(newContentPane);  
         frame.pack();  
         frame.setVisible(true);  
     }  
       
 //------Variables declaration  
     private JPanel thePanel;        
     private JLabel scorejLabel;  
     private JTextField ScorejTextField;     
     private String scoreLabel;  
     private String scoreValue;  
     private JLabel rankLabel;  
     private String rankLabelTxt;  
     private JTextField rankTextField;  
     private String rankText;  
     //-------End of variables declaration  
       
     public SumValuesPanel (String setScoreLabel,String setScoreVal, String rankLabel)  
     {  
         scoreLabel = setScoreLabel;  
         scoreValue = setScoreVal;  
         this.rankLabelTxt = rankLabel;  
                   
         createSumValuesPanel();  
     }  
       
     private void createSumValuesPanel()  
     {         
          thePanel = new JPanel();  
           
         rankLabel = new JLabel();  
         rankTextField = new JTextField();  
         scorejLabel = new JLabel();  
         ScorejTextField = new JTextField();  
           
         thePanel.setBackground(new Color(235, 233, 230));  
         thePanel.setBorder(BorderFactory.createLineBorder(new Color(0, 0, 0)));  
         thePanel.setPreferredSize(new Dimension(200, 180));  
           
         scorejLabel.setHorizontalAlignment(SwingConstants.CENTER);  
         scorejLabel.setText(scoreLabel);  
         scorejLabel.setBorder(BorderFactory.createLineBorder(new Color(0, 0, 0)));  
         scorejLabel.setPreferredSize(new Dimension(40, 20));  
   
         ScorejTextField.setEditable(false);  
         ScorejTextField.setHorizontalAlignment(JTextField.CENTER);  
         ScorejTextField.setText(scoreValue);  
         ScorejTextField.setBorder(BorderFactory.createLineBorder(new Color(0, 0, 0)));  
         ScorejTextField.setMaximumSize(new Dimension(60, 25));  
         ScorejTextField.setMinimumSize(new Dimension(35, 15));  
         ScorejTextField.setPreferredSize(new Dimension(55, 20));  
           
         rankLabel.setHorizontalAlignment(SwingConstants.CENTER);  
         rankLabel.setText(rankLabelTxt);  
         rankLabel.setBorder(BorderFactory.createLineBorder(new Color(0, 0, 0)));  
         rankLabel.setPreferredSize(new Dimension(90, 20));  
   
         rankTextField.setEditable(false);  
         rankTextField.setBackground(new Color(255,255,0));  
         rankTextField.setHorizontalAlignment(JTextField.CENTER);  
         rankTextField.setText(rankText);  
         rankTextField.setBorder(BorderFactory.createLineBorder(new Color(0, 0, 0)));  
         rankTextField.setPreferredSize(new Dimension(55, 20));  
           
         thePanel.add(scorejLabel);  
         thePanel.add(ScorejTextField);  
         thePanel.add(rankLabel);  
         thePanel.add(rankTextField);  
           
         this.add(thePanel);  
     }  
   
 }