Un tutorial de como agregar los componentes SwingX a la paleta de NetBeans, lo puedes encontrar aqui.
Agregando Componentes SwingX a la Paleta
Con los componentes SwingX, agregamos un JXTable en un JFrame
Creamos un objeto JTextField
JTextField fieldPago;
Creamos un modelo
DefaultTableModel modelo;
modelo = (DefaultTableModel) jXTable1.getModel();
Indicamos que la tabla usara el modelo
this.jXTable1.setModel(modelo);
jXTable1.setVisible(true);
Ahora podemos especificar que en la columna 4, usaremos un JTextField, y crearemos un ActionListener para controlar los eventos que ocuren.
TableColumn column = jXTable1.getColumnModel().getColumn(4);
fieldPago = new JTextField();
fieldPago.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextFieldPagoActionPerformed(evt);
}
});
Indicamos el CellEditor
column.setCellEditor(new DefaultCellEditor(fieldPago));
Metodo para controlar el texto ingresado en el JTextField.
private void jTextFieldPagoActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
String tmp = this.fieldPago.getText();
Double Pago = Double.parseDouble(tmp);
Obtenemos el numero de fila donde estamos ubicamos en este momento.
int fila = jXTable1.getSelectedRow();
if (fila == -1) {
JOptionPane.showMessageDialog(this, "No se selecciono ninguna fila", "Mensaje", JOptionPane.WARNING_MESSAGE);
return;
}
tmp = String.valueOf(jXTable1.getValueAt(fila, 3));
Double Deuda = Double.parseDouble(tmp);
tmp = String.valueOf(jXTable1.getValueAt(fila, 5));
Double Saldo = Double.parseDouble(tmp);
if (Pago < 0) {
JOptionPane.showMessageDialog(this, "El pago no puede ser negativo", "Mensaje", JOptionPane.WARNING_MESSAGE);
jXTable1.setValueAt(0.0, fila, 4);
return;
}
Actualizamos otra columna con los valores, esta columna debe ser editable.
jXTable1.setValueAt(Pago, fila, 5);
jXTable1.repaint();
modelo.fireTableDataChanged();
JOptionPane.showMessageDialog(this, "Presionaste Enter pago de " + Pago, "Mensaje", JOptionPane.WARNING_MESSAGE);
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, "Error " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
}
Agregando Componentes SwingX a la Paleta
Con los componentes SwingX, agregamos un JXTable en un JFrame
Creamos un objeto JTextField
JTextField fieldPago;
Creamos un modelo
DefaultTableModel modelo;
modelo = (DefaultTableModel) jXTable1.getModel();
Indicamos que la tabla usara el modelo
this.jXTable1.setModel(modelo);
jXTable1.setVisible(true);
Ahora podemos especificar que en la columna 4, usaremos un JTextField, y crearemos un ActionListener para controlar los eventos que ocuren.
TableColumn column = jXTable1.getColumnModel().getColumn(4);
fieldPago = new JTextField();
fieldPago.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextFieldPagoActionPerformed(evt);
}
});
Indicamos el CellEditor
column.setCellEditor(new DefaultCellEditor(fieldPago));
Metodo para controlar el texto ingresado en el JTextField.
private void jTextFieldPagoActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
String tmp = this.fieldPago.getText();
Double Pago = Double.parseDouble(tmp);
Obtenemos el numero de fila donde estamos ubicamos en este momento.
int fila = jXTable1.getSelectedRow();
if (fila == -1) {
JOptionPane.showMessageDialog(this, "No se selecciono ninguna fila", "Mensaje", JOptionPane.WARNING_MESSAGE);
return;
}
tmp = String.valueOf(jXTable1.getValueAt(fila, 3));
Double Deuda = Double.parseDouble(tmp);
tmp = String.valueOf(jXTable1.getValueAt(fila, 5));
Double Saldo = Double.parseDouble(tmp);
if (Pago < 0) {
JOptionPane.showMessageDialog(this, "El pago no puede ser negativo", "Mensaje", JOptionPane.WARNING_MESSAGE);
jXTable1.setValueAt(0.0, fila, 4);
return;
}
Actualizamos otra columna con los valores, esta columna debe ser editable.
jXTable1.setValueAt(Pago, fila, 5);
jXTable1.repaint();
modelo.fireTableDataChanged();
JOptionPane.showMessageDialog(this, "Presionaste Enter pago de " + Pago, "Mensaje", JOptionPane.WARNING_MESSAGE);
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, "Error " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
}
Comments