В моем JTable я хочу переименовать заголовок таблицы, используя опцию правой кнопки мыши. Щелчок правой кнопкой мыши по любому заголовку дает возможность переименовать заголовок. Но когда я это делаю, он переименовывает выбранный заголовок столбца. Поэтому я должен сначала щелкнуть левой кнопкой мыши по этому столбцу, а затем продолжить обработку. Есть ли способ, когда я щелкаю правой кнопкой мыши по любому столбцу, он также выбирается так, чтобы после переименования его значение было переименовано.
Мой прослушиватель действий выглядит следующим образом::
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);