Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Manejo de JTable

Buenas. Les comento que yo utilizo el JTable para mostrar los datos de una determinada tabla de base de datos, muestro todos los datos(incluido los id) porque despues, seleccionando una fila, puedo modificar o eliminar los mismos(ya que uso las sentencias de SQL con algun parametro), el tema es que el profe me dijo que ocultara las columnas en donde salen por ejemp. nropaciente, nroturno, que son los id, que me relacionan con esas tablas, pero el tema está en que necesito los datos de esa columna, para poder modificar los demas datos o eliminarlos.

Me gustaria saber como se debe hacer para ocultar una columna especifica, pero que cuando yo seleccione la fila de la tabla, se pueda recuperar igual ese dato ocultado y asi hacer la operacion que corresponda. Nose si me habre explica bien.

Lo que se hacer es poner invisible toda la tabla, pero una columna sola no, estoy buscando por internet, pero hasta ahora no he encontrado nada.

mayo 28, 2014 | Unregistered Commenterlatinjava

Se puede ocultar cualquier columna de un tabla:

tabla.removeColumn(tabla.getColumnModel().getColumn(1));

y obtener el contenido de una celda de esa columna, para la fila seleccionada:

tabla.getColumnModel().getValueAt(tabla.getSelectedRow(),1);

mayo 28, 2014 | Registered Commenterchoces

Gracias, voy a probarlo en mi prog y luego te aviso como me fue.
Saludos

mayo 28, 2014 | Unregistered Commenterlatinjava

Hola choces, estuve probando la linea para ocultar la columna, pero sigue mostrandola
Mira, tengo este metodo para ocultar la tabla:
public void setTableVisible(JTable table, boolean isVisible)
{
JTablaPaciente.setVisible(isVisible);
JTablaPaciente.getTableHeader().setVisible(isVisible);

}
Lo desactive, para probar la linea que me diste, pero tampoco me funciona.
La coloque tambien en el metodo en el que creo y cargo la tabla y nada.
Donde deberia colocar esta linea para que funcione?

mayo 29, 2014 | Unregistered Commenterlatinjava

Sigue un test que muestra la validez de ese método.
La tabla tiene 4 columnas, y al iniciar el test queda oculta la primera.
Ten en cuenta que el índice de las columnas comienza en CERO.

/**
<p>
@author Carlos Hoces
*/
public class NewJFrame extends javax.swing.JFrame {

/** Creates new form NewJFrame */
public NewJFrame() {
initComponents();
jTable1.removeColumn(jTable1.getColumnModel().getColumn(0));
}

/** This method is called from within the constructor to
initialize the form.
WARNING: Do NOT modify this code. The content of this method is
always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane1.setViewportView(jTable1);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);

pack();
}// </editor-fold>

/**
@param args the command line arguments
*/
public static void main(String args[]) {

/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new NewJFrame().setVisible(true);
}
});
}

// Variables declaration - do not modify
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
// End of variables declaration
}

mayo 29, 2014 | Registered Commenterchoces

Ya está choces, era porque copie tal cual la linea y no me di cuenta que yo estableci la columna con el valor cero, y vos la habias puesto al valor 1.
Gracias por tu ayuda,

mayo 29, 2014 | Unregistered Commenterlatinjava

Recien veo que me habias contestado...gracias, gracias

mayo 29, 2014 | Unregistered Commenterlatinjava