JTable: Borrar una columna
En un JTable se puede borrar una columna de forma que no se vea. El borrado no afecta al modelo de datos -el DefaultTableModel o lo que tengamos- sino sólo a la visualización. Es decir, los datos de la columna siguen estando, pero no se ven.
Para borrrar la columna, pedimos el ColumnTableModel al JTable, a este le pedimos la columna concreta y luego la borramos. El código puede ser así
JTable tabla = new JTable(...); ... TableColumnModel tcm = tabla.getColumnModel(); // Se pide la columna por su número, empezando en cero. TableColumn columnaABorrar = tcm.getColumn(numeroColumna); tabla.removeColumn (columnaABorrar);
Un codigo de ejemplo completo puede ser el siguiente. Al pulsar el botón, se borra la columna de enmedio.
package chuidiang.ejemplos; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.WindowConstants; import javax.swing.table.DefaultTableModel; public class PruebaBorrarColumnaTabla { private static JTable t; public static void main(String [] args) { JFrame v = new JFrame(); DefaultTableModel m = new DefaultTableModel(); t = new JTable(m); JScrollPane s = new JScrollPane(t); m.addColumn("uno"); m.addColumn("dos"); m.addColumn("tres"); Object [] fila = new Object[] {"a","b","c"}; m.addRow(fila); v.getContentPane().add(s); JButton b = new JButton("borra"); v.getContentPane().add(b,BorderLayout.NORTH); b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { t.removeColumn(t.getColumnModel().getColumn(1)); } }); v.pack(); v.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); v.setVisible(true); } }