通过文本字段修改arraylist

时间:2011-12-20 14:24:32

标签: java swing arraylist

我目前有一个班级Room和一个班级Hostel,其中包含rooms = new ArrayList < Room >();。然后我有一个BookRoomGUI课程。

当房间被添加到arraylist时,它使用以下构造函数:

public Room(int newRoomNo, boolean newRoomEnSuite)
{
    roomNo = newRoomNo;
    roomEnSuite = newRoomEnSuite;
    roomBooking = "Free";
    roomNights = 0;
    roomBooker = "No Booker";
}

BookRoomGUI类中,我有以下JTextFields:

    fields.add(roomnumberJTextField);
    fields.add(bookerJtextField);
    fields.add(nightsJTextField);
    fields.add(peoplenoJTextField);

我正在尝试在Hostel中创建一个方法,该方法将获取这些文本字段的值,并在房间号匹配时更改原始构造函数中的相应变量:

public int makeBooking(int number)
{
  for (Room room : rooms)
  {
     if (number == room.getRoomNo())
     {
         room.setRoomBooker(bookRoom.booker);
     }
  }
}

我的问题是if语句应该包含哪些内容?目前我使用booker = bookerJtextField.getText();BookRoomGUI中的文本字段和Room中的setRoomBooker中获取文本,但这不起作用,我会看到

  

Room中的setRoomBooker()无法应用于(java.lang.String)

1 个答案:

答案 0 :(得分:2)

确保Room中有以下方法:

public void setRoomBooker(String roomBooker) {
    this.roomBooker = roomBooker;
}

现在,如果你看一下错误信息:

  

Room中的setRoomBooker()无法应用于(java.lang.String)

您可以看到,您的setRoomBooker()方法当前未定义为采用java.lang.String类型的参数(或任何参数)。

因此,您需要更改该方法的定义,以便您能够执行以下操作:

room.setRoomBooker(bookRoom.booker); //<-- You are passing it an argument of type String