首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将默认表模型与表头同步?

如何将默认表模型与表头同步?
EN

Stack Overflow用户
提问于 2011-04-22 17:31:19
回答 1查看 914关注 0票数 0

我已经在列标题上编写了动作侦听器,允许用户重命名选定的列并添加新列。

重命名列的代码-

代码语言:javascript
运行
复制
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中添加新列的代码。

代码语言:javascript
运行
复制
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);

但问题是,当我重命名该列,然后添加一个新列时,添加了一个新列,但它显示了刚刚重命名的列的旧名称。

如何将默认表模型与表头同步?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-22 18:12:55

没有用于重命名Default/TableModel上的头的API。这些选项要么是子类化/实现自定义模型,要么是欺骗默认模型,就像这样(伪代码):

代码语言:javascript
运行
复制
Object[] headers = new Object[tableModel.getColumnCount()]; 
forEach (model-column)
    if (index == renamedColumn)
       headers[index] = newHeader
    else
       headers[index] = tableModel.getColumnName(index)
tableModel.setColumnIdentifiers(headers)

(注:假设标识符与名称相同)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5754120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档