2017-07-15 2 views
-1

J'ai une application Swing, j'utilise Retrofit pour consommer le service de repos dans mon application Swing.Créer un JTable en Swing avec la réponse des services Web GET REST

Maintenant, je veux remplir la réponse de m Get Service dans un Jtable.

Thaïs la liste de tous les employés que je reçois à l'aide Rénovation

ArrayList<Employee> employees = EmployeesData.getInstance().getEmployees(); 

Je veux Peupler que dans un jtable

C'est mon employé Modell

public class Employee { 

    private long empno; 
    private String ename; 
    private String job; 
    private Date hiredate; 
    private long mgr; 
    private long sal; 
    private long deptno; 

    public long getEmpno() { 
     return empno; 
    } 

    public void setEmpno(long empno) { 
     this.empno = empno; 
    } 

    public String getEname() { 
     return ename; 
    } 

    public void setEname(String ename) { 
     this.ename = ename; 
    } 

    public String getJob() { 
     return job; 
    } 

    public void setJob(String job) { 
     this.job = job; 
    } 

    public Date getHiredate() { 
     return hiredate; 
    } 

    public void setHiredate(Date hiredate) { 
     this.hiredate = hiredate; 
    } 

    public long getMgr() { 
     return mgr; 
    } 

    public void setMgr(long mgr) { 
     this.mgr = mgr; 
    } 

    public long getSal() { 
     return sal; 
    } 

    public void setSal(long sal) { 
     this.sal = sal; 
    } 

    public long getDeptno() { 
     return deptno; 
    } 

    public void setDeptno(long deptno) { 
     this.deptno = deptno; 
    } 

    @Override 
    public String toString() { 
     return empno + " \t" 
       + ename + " \t" 
       + deptno + " \t" 
       + mgr + " \t" 
       + sal + " \t" 
       + hiredate.toString(); 
    } 
} 

Ici, je veux Remplir la table

public void updateConsole() { 
     ArrayList<Employee> employees = EmployeesData.getInstance().getEmployees(); 
     StringBuilder builder = new StringBuilder(); 
     for (Employee employee : employees) { 
      builder.append(employee.toString()); 


      columns.add("col1"); 
      columns.add("col2"); 
      columns.add("col3"); 

      TableModel tableModel = new DefaultTableModel(employees.toArray(new Object[][] {}), columns.toArray()); 

      table = new JTable(tableModel); 

      builder.append("\n"); 
     } 

     textPane.setText(builder.toString()); 
    } 

Et j'ai cette erreur

java.lang.ArrayStoreException 
    at java.lang.System.arraycopy(Native Method) 
    at java.util.Arrays.copyOf(Arrays.java:3213) 
    at java.util.ArrayList.toArray(ArrayList.java:407) 
    at View.Console.updateConsole(Console.java:43) 
    at application.Main.updateConsole(Main.java:54) 

Quelqu'un peut me aider s'il vous plaît?

+0

1) [Pourquoi « Quelqu'un peut-il me aider? » Pas une question réelle?] (Http://meta.stackoverflow.com/q/284236) 2) Qu'est-ce que vous avez essayé ? Où êtes-vous coincé? 3) Pour une meilleure aide plus tôt, postez un [MCVE] ou [Short, Self Contained, Example correct] (http://www.sscce.org/). Si le code actuel récupère correctement les données, éliminez-le et commencez avec des données codées en dur. –

+0

@AndrewThompson j'ai éditer la publication. J'ai Arraylist d'employés. Je l'obtiens en utilisant les services de repos. Je veux le peupler dans Jtable –

+0

Pourquoi avez-vous modifié la question pour inclure un extrait de code incompilable? Suivez les liens et en fait ** lisez ** le contenu! –

Répondre

0

ça marche bien maintenant. Je fais comme si

public void updateConsole() { 
     ArrayList<Employee> employees = EmployeesData.getInstance().getEmployees(); 
     Object[] columnNames = { "Deptno", "Empno", "Name","Hiredate","Job","Management","Salary"}; 
     DefaultTableModel model = new DefaultTableModel(new Object[0][0], columnNames); 
     StringBuilder builder = new StringBuilder(); 
     for (Employee employee : employees) { 
      //builder.append(employee.toString()); 

      Object[] o = new Object[7]; 
      o[0] = employee.getDeptno(); 
      o[1] = employee.getEmpno(); 
      o[2] = employee.getEname(); 
      o[3] = employee.getHiredate(); 
      o[4] = employee.getJob(); 
      o[5] = employee.getMgr(); 
      o[6] = employee.getSal(); 
      model.addRow(o); 



      //builder.append("\n"); 
     } 

     //textPane.setText(builder.toString()); 
     table.setModel(model); 
    }