2017-07-25 115 views
1

我正在編寫一個程序,它使用幾個自定義的jpanels實質上構成一個Word鍵盤。這個jpanels應該允許用戶從顏色選擇器中選擇一種顏色並將其從jlist中添加或移除。爲了讓使用jpanels的窗口能夠從jpanels獲得數據,我被指示爲我的DefaultListModel和jlist製作setter和getters。我不知道如何用這些類型來做到這一點。我看過參數化ArrayLists的setter和getters的例子,看起來很有前途,但我仍然不明白如何將它應用到listModel和jlist如何爲JList和DefaultListModel製作setter和getters? (Java)

private ArrayList<String> stringlist = new ArrayList<String>(); 

public ArrayList<String> getStringList() { 
return stringlist; 
} 

public setStringList(ArrayList<String> list) { 
stringlist = list 
} 

回答

1

選中此項。如果我們有一個JListDefaultListModel

JList listvariable= new JList(); 
    DefaultListModel model= new DefaultListModel<>(); 

現在,這些都爲相同的getter和setter方法:

public DefaultListModel getModel() { 
    return model; 
    } 
    public void setModel(DefaultListModel model) { 
    this.model = model; 
    } 



    public JList getListvariable() { 
    return listvariable; 
    } 


    public void setListvariable(JList listvariable) { 
    this.listvariable = listvariable; 
    } 
+0

Ohhhh,好的。因此,假設你在構造函數中聲明瞭模型和JList,並且getter和setter在構造函數之外(但是在同一個類中),那麼如何讓這些方法可以訪問列表和模型?如果類正在擴展JPanel,你認爲我真的需要一個構造函數嗎? @bhavna garg – Brooklyn

+0

您可以看到getter方法將這些組件作爲參數,setter方法返回這些組件。這些方法因此可以自動訪問這些組件。並且您不需要基於這些方法的基本目的。 @布魯克林 –

+0

好的,我明白那一部分。但是,例如,getModel必須返回一個在該方法之外聲明的對象(模型)。如果模型已經在構造函數中聲明瞭怎麼辦? getModel方法將如何訪問它? – Brooklyn

1

爲了得到一個JList的選定值,應該遵循以下步驟:

  • 創建擴展的JFrame並實現ActionListener接口的類。
  • 創建一個對象數組。這些將是JList的值。
  • 用上面的數組創建一個新的JList。
  • 創建一個新的JButton。將ActionListener添加到按鈕並覆蓋actionPerformed方法。現在每次用戶按下按鈕時,此方法都會啓動。
  • 調用getSelectedIndex獲取JList中所選項目的索引。
  • 調用getSelectedValue方法獲取JList中所選項目的值。
+0

我不得不做出的ActionListener在一個單獨的類。這個類只應該有JList和DefaultListModel面板。所以我需要的getters和setters調用整個JList和DefaultListModel(不只是選定的索引)。 – Brooklyn