首先,我将介绍我想做的事情。这是大学的一项工作,我们正在使用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
上设置事件处理程序,以在单击JList
时填充searchButton
。另外,是
Rooms
的Suites
和Hotel
子类吗?如果没有,您必须像这样创建listModel
(用于房间):listModel = new DefaultListModel<Rooms>();