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