W moim JTable, chcę zmienić nazwę nagłówka tabeli za pomocą opcji prawym przyciskiem myszy. W Prawym kliknięciem dowolnego nagłówka daje opcję zmiany nazwy nagłówka.Ale robię to zrobi zmianę nazwy nagłówka wybranej kolumny . Muszę więc najpierw kliknąć tę kolumnę, a potem mogę dalej przetwarzać. Czy jest jakiś sposób, że gdy kliknę prawym przyciskiem myszy na dowolną kolumnę, zostanie ona również wybrana, aby po zmianie nazwy została zmieniona jej wartość.Zmień nazwę nagłówka tabeli
Moja akcja słuchacz jest jak poniżej:
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);
Dzięki @mKorbel za odpowiedź. – Ronak
@Ronak cieszę się, że mogę ci pomóc – mKorbel