2015-12-06 252 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个月前,我记忆犹新。顺便说一句,谢谢!你的代码正在工作。 –