Keni Jutsu
Keni Jutsu

Reputation: 1

Updating JList by pressing button

first of all I will introduce what I am trying to do. This is an assignment in university we are making Hotel booking system with JAVA. To go straight to the point, all I need to know is how to update JList when I press button.

    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);
  }

In this GUI class I have instance variable (lists) of Hotel class, in Hotel class there are methods

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

this returns whole ArrayList of Room class objects and also ArrayList of Suite class. QUESTION would be is how to show whole ArrayList of Rooms when I press button, in other words how to update JList which consists of objects, by pressing button? I hope I explained alright.

Upvotes: 0

Views: 819

Answers (1)

Pubudu
Pubudu

Reputation: 994

Your for-each loop is wrong. Try this and see:

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);
  }
}

This still looks sorta messy to me though. A more appropriate approach would be to set an event handler on the searchButton, to populate the JList when searchButton is clicked.

Also, are Rooms and Suites sub classes of Hotel? If not, you'll have to create listModel like this (for rooms):

listModel = new DefaultListModel<Rooms>();

Upvotes: 1

Related Questions