2015-04-17 32 views
-1

所以我有一個叫做郵箱的類,它是一組消息。如何將對象添加到可觀察數組後備列表中?

的消息,在「服務器」類中創建的實例:

Message message1 = new Message(senderRand, recipRand, subject1, today, body1); 

郵箱類:

public class Mailbox { 

    public String name; 
    ObservableList<String> messagelist = FXCollections.observableArrayList(); 
    ListView<String> list = new ListView<String>(messagelist); 

    public Mailbox (String name) { 
     this.name = name; 
    } 

    public int addMessage(Message message) { 
     messagelist.add(message); 
    } 

我不完全知道我在做什麼,但這個想法是我有郵箱對象就像是用來在javafx應用程序上顯示電子郵件對象的「收件箱」。然後,我需要從「收件箱」郵箱中刪除郵件並將其移至「垃圾郵箱」郵箱。

我不明白如何創建這個支持數組,基本上。我應該在郵箱類中擴展集合嗎?我不知道如何格式化此郵箱類,以便我可以從javafx應用程序添加/刪除郵件。我的javafx應用程序只是一列郵箱列表(收件箱,重要的垃圾),旁邊是選定郵箱的郵件列表,旁邊是顯示所選郵件的列表。

需要將郵箱作爲對象的集合。不知道如何。

+0

您在這裏有什麼問題?它看起來是正確的想法。 –

+0

找不到合適的方法添加(消息),方法Collection.add(字符串)不適用,參數不匹配消息不能轉換爲字符串 – sumitz1212

回答

0

解決方案

  • 你並不需要爲您的用例的背列表(FXCollections.observableArrayList()調用已經創建的列表你)。
  • 您需要適當地設置列表的類型(<Message>,而不是<String>)。

示例代碼

public class Mailbox { 
    private final String name; 
    private final ObservableList<Message> messages = 
     FXCollections.observableArrayList(); 

    public Mailbox (String name) { 
     this.name = name; 
    } 

    public void addMessage(Message message) { 
     messages.add(message); 
    } 

    public ObservableList<Message> messages() { 
     return FXCollections.unmodifiableObservableList(messages); 
    } 

    public String getName() { 
     return name; 
    } 
} 

實現注意

上述解決方案使用FXCollections.unmodifiableObservableList()上創建和提供可觀察名單的頂部返回一個不可修改的包裝清單。

return FXCollections.unmodifiableObservableList(messages); 

如果它是確定一個外部對象可以修改消息列表的情況下直接使用郵箱方法的進一步互動,那麼你可以這樣寫:

return messages; 

如果是這樣的話,那麼你可能根本就不需要addMessage方法調用,因爲該類的用戶可能只會寫入:

mailbox.messages().add(new Message()); 
+0

我不明白行FXCollections.unmodifiableObserableList(消息);在messages()方法中,這是否應該工作? – sumitz1212

+0

你不懂什麼? – jewelsea

+0

不可修改的OBS的東西,是工作的方法?我是否錯過了導入?那究竟做了什麼呢? – sumitz1212

相關問題