按按钮更新JList

时间:2015-12-06 17:45:44

标签: java user-interface arraylist 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类中,我有Hotel类的实例变量(列表),在Hotel类中有方法

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

这将返回Room类对象的整个ArrayList以及Suite类的ArrayList。 问题是当我按下按钮时如何显示房间的整个ArrayList,换句话说如何通过按下按钮来更新由对象组成的JList? 我希望我解释得很好。

1 个答案:

答案 0 :(得分: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上设置事件处理程序,以便在点击JList时填充searchButton

此外,Rooms的{​​{1}}和Suites子类是?如果没有,您必须像这样创建Hotel(对于房间):

listModel