Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/06/2013, 21:36
uagrm
 
Fecha de Ingreso: agosto-2010
Mensajes: 126
Antigüedad: 13 años, 9 meses
Puntos: 9
Eliminar fila de un JTable

hola amigos, estoy haciendo un programa para el envío de sms, lo primero que realizo es registrar a los conductores y les genero un tickets (turno) a ellos los cargo en un JTable, una ves que el condctor es atendido su tickets es puesto como desactivo.

Lo que quiero es eliminar la fila de mi JTable, al momento de enviar el SMS.

tengo 4 conlumnas, en la cuarta fila cargo un JButton (por cada conductor), al presionar este boton me abre un JDialog, donde cargo el num. de celular (esto lo obtengo de mi JTable) y el mensaje a eviar,

Este es mi código

- tableGuia es mi JTable
Código PHP:
public class frmSincronizar extends javax.swing.JInternalFrame {

    public frmSincronizar() {
        initComponents();

        Dimension pantalla = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension ventana = this.getSize();
        this.setLocation((pantalla.width - ventana.width)/2, (pantalla.height - ventana.height)/6 );
        this.setVisible(true);

        cargarTablaGuia();
    }

public void cargarTablaGuia() {
        String[] columnNames = {"N° Guía","N° Tickets","N° Celular", "Sms"};
        Object[][] data = null;
        try {
            data = gestorPersonal.mostrar(); // de una BD obtengo Guía, N° Tickets, N° Celular.
        } catch (SQLException ex) {
        }
        tablaGuia.setModel(new javax.swing.table.DefaultTableModel(data, columnNames) {
            @Override public Class<?getColumnClass(int column) {
                return 
getValueAt(0column).getClass();
            }
        });

        
tablaGuia.setRowHeight(46);
        
tablaGuia.setAutoCreateRowSorter(true);

        
int[] ={77,85,85,120};
        for(
int i 0i<4i++)
            
tablaGuia.getColumnModel().getColumn(i).setPreferredWidth(v[i]);
        
tablaGuia.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

        
TableColumn column tablaGuia.getColumnModel().getColumn(3);
        
column.setCellRenderer(new ButtonsRenderer());
        
column.setCellEditor(new ButtonsEditor(tablaGuia));
    }

    public 
void eliminarFila(int fila){
        
DefaultTableModel temp = (DefaultTableModeltablaGuia.getModel();
        
temp.removeRow(fila);
    }
}

class 
ButtonsPanel extends JPanel {
    public final 
java.util.List<JButtonbuttons java.util.Arrays.asList(new JButton("Enviar"));
    public 
ButtonsPanel() {
        
super();
        
setOpaque(true);
        for(
JButton bbuttons) {
            
b.setFocusable(false);
            
b.setRolloverEnabled(false);
            
add(b);
        }
    }
}

class 
ButtonsRenderer extends ButtonsPanel implements TableCellRenderer {
    public 
ButtonsRenderer() {
        
super();
        
setName("Table.cellRenderer");
    }
    
/**/
}

class 
ButtonsEditor extends ButtonsPanel implements TableCellEditor {
     
    public 
ButtonsEditor(final JTable table) {
        
super();
        
MouseListener ml = new MouseAdapter() {
            public 
void mousePressed(MouseEvent e) {
                
ButtonModel m = ((JButton)e.getSource()).getModel();
                if(
m.isPressed() && table.isRowSelected(table.getEditingRow()) && e.isControlDown()) {
                    
setBackground(table.getBackground());
                }
            }
        };
        
buttons.get(0).addMouseListener(ml);
        
buttons.get(0).addActionListener(new ActionListener() {
            @
Override public void actionPerformed(ActionEvent e) {
                
int row table.convertRowIndexToModel(table.getEditingRow());
                
Object cel table.getModel().getValueAt(row1);
                
fireEditingStopped();

                
fmrSms dialog = new fmrSms(new javax.swing.JFrame(), true);
                
dialog.tcelular.setText(String.valueOf(cel));
                
dialog.tmensaje.append("Señor conductor INGRESE a la Balanza 4");
                
                
dialog.fila row// esta parte es solo si borro el código de abajo.

                
dialog.setVisible(true);

// de esta forma elimino la fila una ves que se termina de ejecutar el JDialog 
                
                 
new frmSincronizar().eliminarFila(row);
                 
gestorPersonal.actualizar(String.valueOf(cel)); // actualizo el estado del conductor

                
new frmSincronizar().cargarTablaGuia(); 

//es código es el que no me esta funcionando
            
}
        });

        
addMouseListener(new MouseAdapter() {
            @
Override public void mousePressed(MouseEvent e) {
                
fireEditingStopped();
            }
        });
    }
protected 
void fireEditingStopped() {
        
Object[] listeners listenerList.getListenerList();
        for(
int i listeners.length-2i>=0i-=2) {
            if(
listeners[i]==CellEditorListener.class) {
                if(
changeEvent == nullchangeEvent = new ChangeEvent(this);
                ((
CellEditorListener)listeners[i+1]).editingStopped(changeEvent);
            }
        }
    }
}

Este es mi código de mi JDialog

al presionar el boton de este JDialog me envía el sms, pero tampoco me elimina la fila, lo puse tambien este código para ver si podría funcionar aquí, pero no sucede
Código PHP:
public class fmrSms extends javax.swing.JDialog {

    public 
int fila;
    
frmSincronizar sin = new frmSincronizar();
   

    private 
void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            
// TODO add your handling code here:
        
try {
                 new 
frmSincronizar().eliminarFila(fila);
                 
gestorPersonal.actualizar(String.valueOf(cel)); 
                 new 
frmSincronizar().cargarTablaGuia(); 
        } catch (
SQLException ex) {
            
Logger.getLogger(fmrSms.class.getName()).log(Level.SEVEREnullex);
        }

        
dispose();

    
// de esta manera envio el mensaje
      
new gestorSms(tcelular.getText(), tmensaje.getText()); 

    } 
mi método eliminarFila funaciona al 100%, lo probé de una forma diferente.

saludos, espero que me hagan notar mi error.