【问题标题】:change column names after refreshing JTable java刷新JTable java后更改列名
【发布时间】:2025-12-29 14:05:11
【问题描述】:

我不知道为什么在刷新 JTable 后列名被命名为 "A","B","C" ...。

我创建了一个类来刷新 JTable。

public class TableModelClass extends AbstractTableModel
{
    Object[][] data;
    Object[] title;

public TableModelClass(Object[][] dat, Object[] tit)
{
    data = dat;
    title = tit;    
}

@Override
public int getColumnCount()
{
    if(title != null)
        return title.length;
    return 0;
}

@Override
public int getRowCount()
{
    if(data != null)
        return data.length;
    return 0;
}

@Override
public Object getValueAt(int rowIndex, int columnIndex)
{
    return data[rowIndex][columnIndex];
}

}

我在我的班级中设置了默认的 JTables 值:

Object[] titlesDefault = { "tit1", "tit12","tit3"};
Object[][] dataDefault = {{ "1", "2","3"},
            {"1", "2","3"}};


       _jTable = new JTable(dataDefault, titlesDefault);    

_bAddTable.addActionListener(new ActionListener()
    {           
        @Override
        public void actionPerformed(ActionEvent arg0)
        {
                try
                {
                Object[] titles2 = { "1", "2","3", "1", "2","3"};
                Object[][] data = {{ "1", "2","3"},
                                   { "1", "2","3"},
                       {"1", "2","3"}};
                data.setModel(new TableModelClass(data, titles2));
                } 
                catch (ClassNotFoundException)
                {

                    e1.printStackTrace();
                }               

         };
        });

在此之后,我收到列名中的字母。为什么?

【问题讨论】:

  • 1) 该代码是否可以编译?您的 Object[][] 变量不是二维数组,而是字符串的一维数组。 2) 当调用 ActionListener 时,切勿在 JButton 上使用 MouseListener。
  • 代码编译好了,我应该用什么?
  • 1) 你的二维数组应该包含一个二维数组。 2) 同样,JButtons 应该使用 ActionListeners。本教程将解释所有内容。我不是 JTable 专业人士,但您可能还需要使用列模型。
  • 我尝试使用 ActionListener 但结果是一样的

标签: java swing jtable refresh jtableheader


【解决方案1】:

在不覆盖 getColumnName 的情况下,TableModel 使用“A”、“B”、“C”等默认值。

@Override
public String getColumnName(int column) {
    return title[column];
}

为此,您需要返回一个String,以便它对应于超类中的返回类型。 title 变量应定义为 String[] 类型。

【讨论】: