2015-12-06 204 views
0

更新JList首先我將介紹我正在嘗試做的事情。這是我們正在用JAVA製作酒店預訂系統的大學中的一項任務。直接點,我需要知道的是當我按下按鈕時如何更新JList。按下按鈕

listModel = new DefaultListModel<Hotel>(); 
     bookingList = new JList(listModel); 
class MouseAdapterMod extends MouseAdapter { 

    public void mousePressed(MouseEvent e) { 
    if(e.getSource() == searchButton){ 
    for(lists.getRoomsList() p : lists.getRoomsList()) 
    { 
     listModel.addElement(p); 
    } 
    bookingList.setModel(listModel); 
    } 

在這個GUI類我有酒店類的實例變量(列表),酒店類有方法

public ArrayList<Rooms> getRoomsList() 
    { 
     return roomsList.getListRooms(); 
    } 
    public ArrayList<Suite> getSuitesList() 
    { 
     return roomsList.getListSuites(); 
    } 

這將返回房間類對象的整個ArrayList和也套件類的ArrayList。 問題是如何在按下按鈕時顯示房間的整個ArrayList,換句話說,如何通過按下按鈕來更新由對象組成的JList? 我希望我解釋好。

回答

1

你的for-each循環是錯誤的。試試看看:

public void mousePressed(MouseEvent e) { 
    if(e.getSource().equals(searchButton)){ 
    ArrayList<Rooms> rooms = lists.getRoomsList(); 
    for(Rooms r : rooms) { 
     listModel.addElement(r); 
    } 
    bookingList.setModel(listModel); 
    } 
} 

雖然這仍然看起來有點凌亂。更合適的方法是在searchButton上設置事件處理程序,以在單擊searchButton時填充JList

另外,是RoomsSuites子類Hotel?如果沒有,你必須創建listModel像這樣(的房間):

listModel = new DefaultListModel<Rooms>(); 
+0

是啊,有很多亂七八糟的,但我剛開始JAVA,如3個月前,我記憶猶新。順便說一句,謝謝!你的代碼正在工作。 –