我已经在列标题上编写了动作侦听器,允许用户重命名选定的列并添加新列。
重命名列的代码-
int column = jTable1.getSelectedColumn();
if (column == -1) {
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;
}
}
int viewColumn = jTable1.convertColumnIndexToView(column);
TableColumn tableColumn = jTable1.getColumnModel().getColumn(viewColumn);
tableColumn.setHeaderValue(sColumnName);
jTable1.getTableHeader().repaint();在JTable中添加新列的代码。
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;
}
}
defaultTableModel.addColumn(sColumnName);但问题是,当我重命名该列,然后添加一个新列时,添加了一个新列,但它显示了刚刚重命名的列的旧名称。
如何将默认表模型与表头同步?
发布于 2011-04-22 18:12:55
没有用于重命名Default/TableModel上的头的API。这些选项要么是子类化/实现自定义模型,要么是欺骗默认模型,就像这样(伪代码):
Object[] headers = new Object[tableModel.getColumnCount()];
forEach (model-column)
if (index == renamedColumn)
headers[index] = newHeader
else
headers[index] = tableModel.getColumnName(index)
tableModel.setColumnIdentifiers(headers)(注:假设标识符与名称相同)
https://stackoverflow.com/questions/5754120
复制相似问题