2014-12-01 4 views
0

Я пытаюсь обновить данные из JTable.ошибка при обновлении данных в JTable с использованием TableModel

Этот метод выбора данных из базы данных:

public Object[][] getData() { 
    Object[][] data = new Object[15][10]; 
    try { 

     String query = "SELECT * from emailApp"; 
     rs = st.executeQuery(query); 


     int i = 0; 
     while (rs.next()) { 
      int id = rs.getInt("id"); 
      int priority = rs.getInt("priority"); 
      String sender = rs.getString("sender"); 
      String recipient = rs.getString("recipient"); 
      String labelDb = rs.getString("label"); 
      String subject = rs.getString("subject"); 
      String message = rs.getString("message"); 


      data[i][0] = id; 
      data[i][1] = sender; 
      data[i][2] = priority; 
      data[i][3] = recipient; 
      data[i][4] = labelDb; 
      data[i][5] = subject; 
      data[i][6] = message; 
      i++; 

      if(i>15) break; 

     } 

    } catch(Exception ex) { 
     System.out.println(ex); 
    } 

    return data; 
} 

Затем я использую этот метод, чтобы обновить данные из JTable:

public void setUpTableData() { 
DefaultTableModel model = (DefaultTableModel) table.getModel(); 
DBConnect connect = new DBConnect(); 
Object[][] data = connect.getData(); 
Object[] modelData = new Object[15]; 

model.setRowCount(0); 
for(int i = 0; i<15; i++) { 
    if(data[i][0] == null) break; 
    modelData[0] = data[i][0]; 
    modelData[1] = data[i][1]; 
    modelData[2] = data[i][2]; 
    modelData[3] = data[i][3]; 
    modelData[4] = data[i][4]; 
    modelData[5] = data[i][5]; 
    modelData[6] = data[i][6]; 

    model.addRow(data); 
    } 

model.fireTableDataChanged(); 
table.setModel(model); 
} 

Ошибка: Исключение в потоке «AWT- EventQueue-0 "java.lang.ClassCastException: javax.swing.JTable $ 1 не может быть отнесено к javax.swing.table.DefaultTableModel

и то я вызываю этот метод, нажимая кнопку. Может кто-нибудь сказать мне, что я делаю неправильно. Спасибо!

+0

Примечание: 'если (я> 15)' -> Что происходит, когда вы достигаете индекс 15? Выглядит из-за пределов ко мне :-) –

+0

Также, если вам понравится исправление «ошибки», это поможет нам, если бы _we_ также знал, что это было. –

+0

Какая ошибка вы получаете? – gks

ответ

0

Так, благодаря MadProgrammer, я понял, и решить эту проблему (В случае, если кто-то есть такая же проблема)

public void refreshData() { 
    DBConnect connect = new DBConnect(); 
    Object[][] data = connect.getData(); // collecting the data from DataBase after inserting, updating 
    DefaultTableModel model = new DefaultTableModel(data, columnNames); // creating a new DefaultTableModel with the new data 
    table.setModel(model); // setting the DefaultTableModel to the table - Refreshing the table 
} 
Смежные вопросы