簡體   English   中英

按下按鈕更新JList

[英]Updating JList by pressing button

首先,我將介紹我想做的事情。 這是大學的一項工作,我們正在使用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類中,我有Hotel類的實例變量(列表),在Hotel類中有方法

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

這將返回Room類對象的整個ArrayList以及Suite類的ArrayList。 問題是當我按下按鈕時如何顯示整個房間的ArrayList,換句話說如何通過按下按鈕來更新由對象組成的JList? 我希望我能解釋清楚。

您的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>();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM