2017-08-01 3 views
1

Ich habe eine Methode wie unten in der Task Klasse. Es ist wie folgt:Wie gebe ich das Array in meiner Methode zurück?

public void populateJTable(){ 
    for (int i = 0; i < tasks.size(); i++){ 
      String name = tasks.get(i).getTaskName(); 
      String dueDate = tasks.get(i).getTaskPriority(); 
      String priority = tasks.get(i).getTaskPriority(); 

      Object[] data = {name, dueDate, priority}; //would like to return this 
    }} 

Ich möchte die Object [] data ... aus dem Verfahren zurück, so dass ich es auf meine JTable in meiner GUI Klasse hinzufügen. Wie würde ich das machen? Meine GUI Klasse ist unten:

String[] columnNames = {"Task", "Due Date", "Priority"}; 
DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0); 
table = new JTable(tableModel); 
scrollPane.setViewportView(table); 
tableModel.add(data); // would like to add the data here from the populateJTable method. 

Dank.

+0

Welche "Task" Klasse meinst du? Afaik, es gibt keine, die in Schwung ist, und vom Methodennamen sieht es aus, als wäre es eine benutzerdefinierte Klasse. Was ist also das Problem, wenn man nur den Rückgabetyp ändert? Außerdem könnten Sie darüber nachdenken, einen Verweis auf das Tabellenmodell an diese Methode zu übergeben und die Daten dort hinzuzufügen. – Thomas

Antwort

1

neu definieren Sie Ihre Methode wie folgt:

public Object[] pupulateJTable() { 
    .... 
    return data; 
} 
+0

Ich habe das versucht, aber dann fordert es mich auf, die Variable zu initialisieren. – user982467

+0

Dann werden Daten nicht initialisiert, bevor Sie versuchen, es zurückzugeben. –

0

Ändern der Rückgabetyp Ihrer Methode von void zu Object[] und return data; am Ende Ihrer Methode hinzufügen.

+0

Ich habe das versucht, aber dann fordert es mich auf, die Variable zu initialisieren. – user982467

+0

Das ist ' s, weil es 'Objekt [] Daten = neues Objekt [] {/ * was auch immer hier sein soll * /};' – Vivick

0

möchte dies zurück

dann die Art des Verfahrens Rückkehr ändern, die nicht ungültig, da Leere zurückkehrt nichts sein kann ... Sie brauchen so etwas wie:

public Object[] pupulateJTable() { 
    // TODDY.... 
    return new Object[]{name, dueDate, priority}; 
} 
+0

Es fragt mich immer noch, einen Rückgabetyp hinzuzufügen. – user982467

+0

unmöglich bro, Sie haben dies: ** zurückgeben neues Objekt [] {Name, Fälligkeitsdatum, Priorität}; ** –

+0

https://snag.gy/feOymQ.jpg – user982467

0

Abhängig von task.size() können Sie viele Aufgabennamen, Daten und Prioritäten haben. Ich würde vorschlagen, stattdessen eine List<String[]> zurückgeben. Beispiel:

public List<String[]> populateJTable(){ 
    List<String[]> list = new ArrayList<>(); 
    for (int i = 0; i < tasks.size(); i++){ 
      String name = tasks.get(i).getTaskName(); 
      String dueDate = tasks.get(i).getTaskPriority(); 
      String priority = tasks.get(i).getTaskPriority(); 

      list.add(new String[]{name, dueDate, priority}); 
    } 
    return list; 
} 
+0

Sieht man das ein zweites Mal an, macht das keinen Sinn. Warum greifen Sie nicht nur auf Ihre Aufgabenvariablen zu oder geben Aufgaben zurück? – Eritrean

Verwandte Themen