En mi JTable, quiero renombrar el encabezado de la tabla con la opción de clic derecho. Al hacer clic derecho en cualquier encabezado, da la opción de cambiar el nombre del encabezado. Pero cuando lo haga renombrará el encabezado de la columna seleccionada . Así que primero tengo que hacer clic en esa columna y luego puedo procesarla. ¿Hay alguna manera de que cuando hago clic con el botón derecho en cualquier columna, también se selecciona para que después de renombrar su valor se renombre?Cambie el nombre del encabezado de tabla
Mi oyente de action es la siguiente:
int column = jTable1.getSelectedColumn();
if (column == -1) {
return;
}
if (column == 0) {
JOptionPane.showMessageDialog(jTable1, "You can not rename this column.");
return;
}
boolean blag = true;
String sColumnName = null;
while (blag) {
sColumnName = (String) JOptionPane.showInputDialog(jTable1, "Enter Column Name", "Add Column", JOptionPane.INFORMATION_MESSAGE, null, null, null);
if (sColumnName == null) {
return;
}
if (sColumnName.trim().equalsIgnoreCase("")) {
JOptionPane.showMessageDialog(jTable1, "Column name can not be blank.");
blag = true;
} else {
blag = false;
}
Vector vColumns = new Vector();
for (int i = 0; i < defaultTableModel.getColumnCount(); i++) {
vColumns.add(defaultTableModel.getColumnName(i));
}
if (vColumns.contains(sColumnName)) {
JOptionPane.showMessageDialog(jTable1, "Column name " + sColumnName + " already exist.");
return;
}
}
int viewColumn = jTable1.convertColumnIndexToView(column);
int totalColumn = defaultTableModel.getColumnCount();
Object[] headers = new Object[totalColumn];
for (int i = 0; i < totalColumn; i++) {
if (i == column) {
headers[i] = sColumnName;
} else {
headers[i] = defaultTableModel.getColumnName(i);
}
}
defaultTableModel.setColumnIdentifiers(headers);
Gracias @mKorbel por la respuesta. – Ronak
@Ronak encantado de ayudarte – mKorbel