I took some time doing a table in Java. The issue is that I need help, since I need to "disable" a button (which is integrated in the table) if in the comment COLUMN corresponds to "Rejection".
I hope you can help me. I break the code.
public void llamarMuestra() throws SQLException {
// tblDatos.setDefaultRenderer (Object.class, new MiRender());
tblDatos.setDefaultRenderer(Object.class, new Render()); //LLAMA CLASE RENDER QUE GENERA LOS BOTONES
tblDatos.setAutoResizeMode(JTable.WIDTH);
setVisible(true);
JButton btn1 = new JButton("Modificar");
btn1.setName("modificar");
JButton btn2 = new JButton("Eliminar");
btn2.setName("eliminar");
DefaultTableModel modelo = new DefaultTableModel();
JTable tabla = new JTable(modelo);
trsfiltro = new TableRowSorter(modelo);
tblDatos.setRowSorter(trsfiltro);
String query = ("SELECT m.idMuestras, m.nregistro, c.nombrecliente, m.matriz, m.fechaingresolaboratorio, m.laboratorioejecutante, m.estado, m.observaciones,m.comentario "
+ "FROM muestras m "
+ "INNER JOIN clientes c ON m.fk_idcliente = c.idClientes WHERE m.laboratorioejecutante LIKE 'LADIOX' ");
PreparedStatement pst = cn.prepareStatement(query);
ResultSet ResultSet = pst.executeQuery();
modelo.setColumnIdentifiers(new Object[]{"ID Muestras", "Numero Registro", "Cliente", "Matriz", "Analisis", "Ingreso Laboratorio", "Laboratorio Ejecutante", "Estado", "Comentario Rechazo", "Modificar", "Eliminar"}); //creo el nombre de la columna
try {
while (ResultSet.next()) {
int a = ResultSet.getInt("m.idMuestras");
modelo.addRow(new Object[]{ResultSet.getInt("m.idMuestras"), ResultSet.getInt("m.nregistro"), ResultSet.getString("c.nombrecliente"),
ResultSet.getString("m.matriz"), Listaanalisis(a), ResultSet.getDate("m.fechaingresolaboratorio"),
ResultSet.getString("m.laboratorioejecutante"), ResultSet.getString("m.estado"), ResultSet.getString("m.comentario"), btn1, btn2});
btn2.repaint();
}
tblDatos.setModel(modelo);
tblDatos.getColumnModel().getColumn(0).setMaxWidth(0);
tblDatos.getColumnModel().getColumn(0).setMinWidth(0);
tblDatos.getColumnModel().getColumn(0).setPreferredWidth(0);
modelo.fireTableDataChanged();
} catch (SQLException e) {
Logger.getLogger(TableroMuestraLADIOX.class.getName()).log(Level.SEVERE, null, e);
System.out.println("error con tabla");
}
}
WITH THE CODE GET UP THE TABLE AND CHARGE THE DATA AND NOW I SHARE THE RENDER FOR THE CREATION OF THE BUTTON WITHIN THE TABLE
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package Modelo;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableCellRenderer;
public class Render extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
// CREA BOTON DENTRO DE TABLA
if (value instanceof JButton) {
JButton btn = (JButton) value;
if (isSelected) {
btn.setForeground(table.getSelectionForeground());
btn.setBackground(table.getSelectionBackground());
} else {
btn.setForeground(table.getForeground());
btn.setBackground(UIManager.getColor("Button.background"));
}
return btn;
}
if (value instanceof JCheckBox) {
JCheckBox ch = (JCheckBox) value;
return ch;
}
return super.getTableCellRendererComponent(table, value, isSelected,
hasFocus, row, column); //To change body of generated methods, choose Tools | Templates.
}
// return null;
}