歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java自動計算表格某一數字列的和

Java自動計算表格某一數字列的和

日期:2017/3/1 10:16:11   编辑:Linux編程

Java自動計算表格某一數字列的和(一):

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