Ver Mensaje Individual
  #2 (permalink)  
Antiguo 14/05/2013, 14:13
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 10 meses
Puntos: 1360
Respuesta: Sumar Columnas

Básicamente no funciona por que el modelo lo estas recién instanciando es normal que no tenga nada.

Te dejo un ejemplo completamente funcional:
Código Java:
Ver original
  1. import java.awt.Dimension;
  2. import java.awt.GridLayout;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5. import javax.swing.JButton;
  6. import javax.swing.JFrame;
  7. import javax.swing.JPanel;
  8. import javax.swing.JScrollPane;
  9. import javax.swing.JTable;
  10. import javax.swing.event.TableModelEvent;
  11. import javax.swing.event.TableModelListener;
  12. import javax.swing.table.DefaultTableModel;
  13. import javax.swing.table.TableModel;
  14.  
  15. public class Utils extends JPanel implements TableModelListener {
  16.  
  17.     private static final long serialVersionUID = 1L;
  18.     private boolean DEBUG = false;
  19.     private JTable table;
  20.     private JButton okButton;
  21.     private String[] columnNames = {"First Name", "Last Name", "Sport", "# of Years", "Vegetarian"};
  22.     private Object[][] data = {{"Kathy", "Smith", "Snowboarding", new Integer(5), (false)},
  23.         {"John", "Doe", "Rowing", new Integer(3), (true)},
  24.         {"Sue", "Black", "Knitting", new Integer(2), (false)},
  25.         {"Jane", "White", "Speed reading", new Integer(20), (true)},
  26.         {"Joe", "Brown", "Pool", new Integer(10), (false)}};
  27.     private TableModel model = new DefaultTableModel(data, columnNames) {
  28.  
  29.         private static final long serialVersionUID = 1L;
  30.  
  31.         @Override
  32.         public Class<?> getColumnClass(int column) {
  33.             return getValueAt(0, column).getClass();
  34.         }
  35.     };
  36.  
  37.     private JButton getOkButton() {
  38.         okButton = new JButton("OK");
  39.         okButton.addActionListener(new ActionListener() {
  40.  
  41.             @Override
  42.             public void actionPerformed(ActionEvent ae) {
  43.                 TableModel model = table.getModel();
  44.                 int total = 0;
  45.                 for (int row = 0; row < model.getRowCount(); row++) {
  46.                     total = total + (Integer)model.getValueAt(row, 3);
  47.                 }
  48.                 System.out.print(total + "\n");
  49.             }
  50.         });
  51.         return okButton;
  52.     }
  53.  
  54.     public Utils() {
  55.         super(new GridLayout(1, 0));
  56.         model.addTableModelListener(this);
  57.         table = new JTable(model);
  58.         table.setPreferredScrollableViewportSize(new Dimension(500, 70));
  59.         table.setFillsViewportHeight(true);
  60.         JScrollPane scrollPane = new JScrollPane(table);
  61.         add(scrollPane);
  62.         add(getOkButton());
  63.     }
  64.  
  65.     public void tableChanged(TableModelEvent e) {
  66.         int row = e.getFirstRow();
  67.         int column = e.getColumn();
  68.         model = (TableModel) e.getSource();
  69.         String columnName = model.getColumnName(column);
  70.         Object datas = model.getValueAt(row, column);
  71.         System.out.println("Column ---> " + columnName + ", new value is " + datas);
  72.     }
  73.  
  74.     private static void createAndShowGUI() {
  75.         JFrame frame = new JFrame("Utils");
  76.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  77.         Utils newContentPane = new Utils();
  78.         newContentPane.setOpaque(true); // content panes must be opaque
  79.         frame.setContentPane(newContentPane);
  80.         frame.pack();
  81.         frame.setVisible(true);
  82.     }
  83.  
  84.     public static void main(String[] args) {
  85.         javax.swing.SwingUtilities.invokeLater(new Runnable() {
  86.  
  87.             public void run() {
  88.                 createAndShowGUI();
  89.             }
  90.         });
  91.     }
  92. }