2013-08-14 3 views
0

Я не знаю, почему имена столбцов называются «A», «B», «C» ... после обновления JTable.изменить имена столбцов после обновления JTable java

Я создал класс для обновления 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]; 
} 

}

Я установил JTable: значения по умолчанию в моем классе:

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(); 
       }    

     }; 
     }); 

И после этого я получаю письмо в именах столбцов. Зачем?

+0

1) выполняет ли этот код? Ваша переменная Object [] [] не является 2-D массивом, а представляет собой 1-мерный массив String. 2) Никогда не используйте MouseListener в JButton, когда вызывается ActionListener. –

+0

компилируется, так что я должен использовать? – szefu

+0

1) Ваш двухмерный массив должен содержать 2-мерный массив. 2) Снова JButtons должен использовать ActionListeners. Учебник объяснит все. Я не JTable pro, но вам может понадобиться использовать модель столбца. –

ответ

3

Без перекрывая getColumnName, то TableModel использует значения "A", "B", "C" и т.д.

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

Для этого по умолчанию для работы вам необходимо вернуть String так, чтобы она соответствовала тип возврата в суперклассе. Переменная title должна быть определена как тип String[].

Смежные вопросы