Данные не отображаются в jTable, в нем нет данных - PullRequest
0 голосов
/ 11 марта 2020

Я использую phpMyAdmin через xampp в качестве своего хоста, я могу просто добавить данные, но когда я запускаю приложение, оно не показывает никаких данных. Может кто-нибудь, пожалуйста, проверьте мой код. Я новичок в программировании в java, поэтому, пожалуйста, потерпите меня.

public DefaultTableModel getmodel(){
DefaultTableModel model = (DefaultTableModel) jtbl.getModel();
                model.setRowCount(0);
                show_data_in_jtable();
                return null;
}
public ArrayList<User> getuserList()
  {
       ArrayList<User> userList =  new ArrayList<User>();
        Connection Conn2 = m2.getConnection();
        String query = "select * from Student ";
        Statement st;
          ResultSet rs;

          try{
          st = Conn2.createStatement();
          rs = st.executeQuery(query);
          User user_var;

          while(rs.next())
                {
            user_var = new User(rs.getInt("id"),rs.getString("fname"),rs.getString("lname"),rs.getString("mname"),rs.getInt("age"),rs.getString("Gender"),rs.getString("course"));
            userList.add(user_var);
                }
          }
          catch (Exception error)
          {
              error.printStackTrace();
            }
          return userList;
    }
// display data on Jtable
public void show_data_in_jtable()
   {
   ArrayList<User> list = getuserList();
   DefaultTableModel model = (DefaultTableModel)  jtbl.getModel();
    Object[] column = new Object[5];

    for(int i = 0; i < list.size(); i++)
            {
               column  [0] = list.get(i).getId();
                   column [1] = list.get(i).getFirstName();
                      column [2] = list.get(i).getLastName();
                      column [3] = list.get(i).getLastName();
                         column [4] = list.get(i).getMiddleName();
                            column [5] = list.get(i).getGender();
                            column [6] = list.get(i).getCourse();
                         model.addRow(column);
            }
    }

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Это на самом деле не ответ на ваш вопрос, так как я думаю, что ваша проблема заключается в том, что вы не добавили модель, исправляющую таблицу, однако я бы посоветовал вам не использовать DefaultTableModel. Создайте свою собственную модель, расширив AbstractTableModel, в долгосрочной перспективе она облегчит вашу жизнь:

 public class UserTableModel extends AbstractTableModel {
private List<User> users = new ArrayList<>();
@Override
public int getColumnCount() {
    return 6;
}

public String getColumnName(int col) {
    switch (col) {
    case 0:
        return "ID";
    case 1:
        return "Last Name";
    case 2:
        return "First Name";
    case 3:
        return "Middle Name";
    case 4:
        return "Gender";
    case 5:
        return "Course";
    }
    return null;
}
@Override
public int getRowCount() {
    return users.size();
}

public void setUsers(List<User> users) {
    this.users.clear();
    if (users != null) {
        this.users.addAll(users);
    }
    fireTableDataChanged();
}

public void addUser(User user) {
    users.add(user);
    fireTableRowsInserted(users.size() - 1, users.size() - 1);
}

public void removeUser(User user) {
    if (user != null) {
        users.removeIf(u -> u.getId().contentEquals(user.getId()));
    }
    fireTableDataChanged();
}
public void removeRow(int row) {
    if (row >= 0 && row < users.size()) {
        users.remove(row);
        fireTableDataChanged();
    }
}
@Override
public Object getValueAt(int row, int col) {
    if (row >= 0 && row < users.size() && col >= 0 && col < getColumnCount()) {
        User user = users.get(row);
        switch (col) {
        case 0:
            return user.getId();
        case 1:
            return user.getFirstName();
        case 2:
            return user.getLastName();
        case 3:
            return user.getMiddleName();
        case 4:
            return user.getGender();
        case 5:
            return user.getCourse();
        }
    }
    return null;
}
}
0 голосов
/ 11 марта 2020

Вы установили свою модель на Jtable?

Если вы сделали это, что является результатом функции getuserList ()? Вы отлаживали свой код?

Проверьте это Как использовать таблицы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...