Как отобразить все строки в Java с помощью JTable - PullRequest
0 голосов
/ 14 марта 2019

Я хотел бы спросить, как отобразить все строки в Java, используя JTable. Я попытался использовать условие while для оценки результата result.next ().

Я попытался распечатать его с помощью System.out.println, и он отображает все записи, однако, когда я попробовал его на JTable, он отображает только последнюю строку.

`

while(results.next()) {

    String id = results.getString("id");
    String date_collected = results.getString("date_collected");
    String date_disposed = results.getString("date_disposed");
    String person_in_charged = results.getString("person_in_charged");
    String status = results.getString("status");

    jTable1.setModel(new javax.swing.table.DefaultTableModel(
       new Object [][]){
            {id, date_collected, date_disposed, person_in_charged, status}
       },
       new String [] {
             "ID", "Date collected", "Date disposed", "person in charged", 
             "status"
       }
     )); 

     jScrollPane1.setViewportView(jTable1);

     if (jTable1.getColumnModel().getColumnCount() > 0) {
        jTable1.getColumnModel().getColumn(0).setResizable(false);
        jTable1.getColumnModel().getColumn(1).setResizable(false);
        jTable1.getColumnModel().getColumn(2).setResizable(false);
        jTable1.getColumnModel().getColumn(3).setResizable(false);
      }
 }

`

Можете ли вы помочь мне Спасибо.

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

DefaultTableModel должен быть создан и установлен вне цикла.

    DefaultTableModel model = new DefaultTableModel();

    model.addColumn("you column names");
    model.addColumn("another column name");
    //you can add all your column headers here      

    JTable table = new JTable();

    table.setModel(model);

   while(rs.next())
    {
         String id = results.getString("id");
         String date_collected = results.getString("date_collected");
         String date_disposed = results.getString("date_disposed");
         String person_in_charged = results.getString("person_in_charged");
         String status = results.getString("status");


         model.addRow(new Object[]{id, date_collected, date_disposed, person_in_charge, status });
    }

и продолжить с остальным кодом здесь.

0 голосов
/ 14 марта 2019

Попробуйте накопить данные, примерно так:

// to hold the data
List<Object[]> data = new ArrayList<>();

// loop through the ResultSet
while(results.next())
{
    String id = results.getString("id");
    String date_collected = results.getString("date_collected");
    String date_disposed = results.getString("date_disposed");
    String person_in_charged = results.getString("person_in_charged");
    String status = results.getString("status");

    // add a new row of data
    data.add(new Object[] {id, date_collected, date_disposed, person_in_charged, status});
}

// after the loop: set the data as the model
jTable1.setModel(new javax.swing.table.DefaultTableModel(
    // convert from List to array
    data.toArray(new Object[][data.size()],
    // column headers
    new String [] { "ID", "Date collected", "Date disposed", "person in charged", "status" }
)); 

// other details from your code: moved outside of the loop...
jScrollPane1.setViewportView(jTable1);

if (jTable1.getColumnModel().getColumnCount() > 0)
{
    jTable1.getColumnModel().getColumn(0).setResizable(false);
    jTable1.getColumnModel().getColumn(1).setResizable(false);
    jTable1.getColumnModel().getColumn(2).setResizable(false);
    jTable1.getColumnModel().getColumn(3).setResizable(false);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...