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(0, column).getClass();
}
});
tablaGuia.setRowHeight(46);
tablaGuia.setAutoCreateRowSorter(true);
int[] v ={77,85,85,120};
for(int i = 0; i<4; i++)
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 = (DefaultTableModel) tablaGuia.getModel();
temp.removeRow(fila);
}
}
class ButtonsPanel extends JPanel {
public final java.util.List<JButton> buttons = java.util.Arrays.asList(new JButton("Enviar"));
public ButtonsPanel() {
super();
setOpaque(true);
for(JButton b: buttons) {
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(row, 1);
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-2; i>=0; i-=2) {
if(listeners[i]==CellEditorListener.class) {
if(changeEvent == null) changeEvent = 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.SEVERE, null, ex);
}
dispose();
// de esta manera envio el mensaje
new gestorSms(tcelular.getText(), tmensaje.getText());
}
saludos, espero que me hagan notar mi error.