Java自动计算表格某一数字列的和


Java自动计算表格某一数字列的和(一):

  1. package com.han;  
  2.   
  3. import java.awt.BorderLayout;  
  4. import java.awt.Container;  
  5. import java.util.Vector;  
  6.   
  7. import javax.swing.JFrame;  
  8. import javax.swing.JLabel;  
  9. import javax.swing.JOptionPane;  
  10. import javax.swing.JPanel;  
  11. import javax.swing.JScrollPane;  
  12. import javax.swing.JTable;  
  13. import javax.swing.JTextField;  
  14. import javax.swing.event.TableModelEvent;  
  15. import javax.swing.event.TableModelListener;  
  16. import javax.swing.table.DefaultTableModel;  
  17.   
  18. /** 
  19.  * 自动计算表格某一数字列的和 
  20.  * @author HAN 
  21.  * 
  22.  */  
  23. public class TabelModelEvent_2 extends JFrame {  
  24.   
  25.     /** 
  26.      *  
  27.      */  
  28.     private static final long serialVersionUID = 7045416728019138021L;  
  29.   
  30.     float sum = 0;  
  31.   
  32.     public TabelModelEvent_2() {  
  33.         // TODO Auto-generated constructor stub   
  34.         final Container container = getContentPane();  
  35.         JScrollPane scrollPane = new JScrollPane();  
  36.         Vector<String> tableNames = new Vector<String>();  
  37.         tableNames.add("数字列");  
  38.         Vector<Vector<String>> tableValues = new Vector<Vector<String>>();  
  39.         for (int i = 0; i < 4; i++) {  
  40.             Vector<String> vector = new Vector<String>();  
  41.             vector.add(null);  
  42.             tableValues.add(vector);  
  43.         }  
  44.         final DefaultTableModel defaultTabelModel = new DefaultTableModel(  
  45.                 tableValues, tableNames);  
  46.         JTable table = new JTable(defaultTabelModel);  
  47.         scrollPane.setViewportView(table);  
  48.         container.add(scrollPane, BorderLayout.CENTER);  
  49.         JPanel panel = new JPanel();  
  50.         JLabel label = new JLabel("数字列总和:");  
  51.         final JTextField textField = new JTextField(10);  
  52.         panel.add(label);  
  53.         panel.add(textField);  
  54.         container.add(panel, BorderLayout.SOUTH);  
  55.   
  56.         defaultTabelModel.addTableModelListener(new TableModelListener() {  
  57.   
  58.             @Override  
  59.             public void tableChanged(TableModelEvent e) {  
  60.                 // TODO Auto-generated method stub   
  61.                 if (e.getType() == TableModelEvent.UPDATE) {  
  62.                     int row = e.getFirstRow();  
  63.                     int column = e.getColumn();  
  64.   
  65.                     // keep that every cell value is float or null.   
  66.                     try {  
  67.                         Float.parseFloat((String) defaultTabelModel.getValueAt(  
  68.                                 row, column));  
  69.                     } catch (NumberFormatException e1) {  
  70.                         JOptionPane.showMessageDialog(container,  
  71.                                 "Your input object is not a float type");  
  72.                         defaultTabelModel.setValueAt(null, row, column);  
  73.                     } catch (NullPointerException e2) {  
  74.                         // do nothing   
  75.                     }  
  76.   
  77.                     for (int i = 0; i < 4; i++) {  
  78.                         Object cellValue = defaultTabelModel.getValueAt(i, 0);  
  79.                         if (cellValue != null) {  
  80.   
  81.                             float floatValue = Float  
  82.                                     .parseFloat((String) cellValue);  
  83.                             sum += floatValue;  
  84.   
  85.                         }  
  86.                     }  
  87.                 }  
  88.                 textField.setText(new Float(sum).toString());  
  89.                 sum = 0;  
  90.             }  
  91.   
  92.         });  
  93.     }  
  94.   
  95.     /** 
  96.      * @param args 
  97.      */  
  98.     public static void main(String[] args) {  
  99.         // TODO Auto-generated method stub   
  100.         TabelModelEvent_2 frame = new TabelModelEvent_2();  
  101.         frame.setTitle("自动计算表格某一数字列的和");  
  102.         frame.pack();  
  103.         frame.setVisible(true);  
  104.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  105.     }  
  106.   
  107. }  
  • 1
  • 2
  • 下一页
【内容导航】
第1页:(一) 第2页:(二)

相关内容