JTable: Borrar una columna

De ChuWiki

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);

	}
}