2014-10-13 6 views
0

части отдельного файла класса для -Объектов «Bericht» (нидерландских для сообщений, содержит строку и две даты):добавить объект ArrayList в конструкторе

private ArrayList<Bericht> lijst = new ArrayList<>(); // 
//constructor for a new object: 
    public Bericht(String bericht, Date startDag, Date eindDag) { 
     this.bericht = bericht; 
     this.startDag = startDag; 
     this.eindDag = eindDag; 
     // System.out.println(""+lijst.size())// prints always a "0" 
     lijst.add(this); 
     // System.out.println(""+lijst.size())//is always one 

    } 

Где-то в моем основном методе я создать новый объекты этого класса:

Bericht message = new Bericht(berichtVak.getText(), calendar1.getDate(), calendar2.getDate()); 
message.printBerichten(berichtTextArea); //this method prints the String from each Bericht- object in the textarea 

метод "printberichten" итерация ArrayList и печатает все сообщения

public void printBerichten(JTextArea jta) { 
     StringBuffer bfr = new StringBuffer(); 
     for (Bericht msg : lijst) { 
      bfr.append(msg.getBericht()); //this getter method returns the string 
     } 
     jta.setText(bfr.toString()); 
    } 

getBericht метод геттер:

public String getBericht() { 
    return bericht; 
} 

Так что, если я создать новый объект, все мои предыдущие объекты должны отображаться в TEXTAREA, но мне кажется, что я создать только один экземпляр моего класса.

До и после команды «lijst.add (это)» я добавил System.out.println, чтобы проверить размер от Arraylist, и один возвращает всегда 0, а другой - «1».

+1

так, что ваш вопрос? – nem035

+1

Возможно, вы захотите сделать arraylist static. – brso05

ответ

1

Из ваших ожиданий, вам нужно lijst статичные:

private static ArrayList<Bericht> lijst = new ArrayList<>(); // 

Опционально printBerichten может быть статическим, а так как он не имеет доступ к любому переменному члену:

public static void printBerichten(JTextArea jta) { 

Делая lijst статического каждый экземпляр Bericht будет добавлен в единственный список, когда он будет создан. Когда lijist не был статичным, каждый экземпляр Bericht имел свой собственный список, и только один экземпляр был бы добавлен в этот список.

+0

Спасибо, узнали что-то новое сегодня (т.е. статический объект). теперь имеют: private static ArrayList lijst = new ArrayList <>() и это решило мою проблему. –

0

делают lijst статичным:

private ArrayList<Bericht> lijst = new ArrayList<>(); // 
    public Bericht(String bericht, Date startDag, Date eindDag) { 
     this.bericht = bericht; 
     this.startDag = startDag; 
     this.eindDag = eindDag; 
     // System.out.println(""+lijst.size()) 
     lijst.add(this); 
     // System.out.println(""+lijst.size()) 

    } 
+0

Этот ответ был отмечен как ответ низкого качества, пожалуйста, предоставьте некоторое объяснение. –

Смежные вопросы