java:如何在arrayList中获取存储索引的相关值

时间:2012-04-03 11:30:53

标签: java combobox arraylist jcombobox

我已将comboBox项的索引存储到数组中。现在当我检索它时,我得到了相同的索引。

我希望我想要显示该索引的相关值。

这是我的代码。

这是将索引添加到数组中的函数。

public void addData() {

  // Retrive the text field values and combo box selected index and store them in variable
  int roomIndex = roomTypeCombo.getSelectedIndex();
  int mealIndex = mealCombo.getSelectedIndex();
  Int daysIndex = daysCombo.getSelectedIndex();

  //create the object of Customer class and pass the parameters
  Customer c = new Customer(roomIndex, mealIndex, daysIndex);
  myList.add(c); // add data into array list


} // end of function

这是将存储值显示到ArrayList

的功能
public void showAll() {
  String displayRecords = ""; // empty string

  // retrieve all stored records in array list and store in variable
  for (int i = 0; i < myList.size(); i++) {
    displayRecords = displayRecords + myList.get(i) + "\n";
  }

  display.setText(displayRecords);
} // end of function

4 个答案:

答案 0 :(得分:0)

如果显示组合框的值是您的要求,那么而不是

int roomIndex = roomTypeCombo.getSelectedIndex();
int mealIndex = mealCombo.getSelectedIndex();
Int daysIndex = daysCombo.getSelectedIndex();

为什么不使用以下代码:

String room = (String) roomTypeCombo.getSelectedItem();
String meal = (String) mealCombo.getSelectedItem();
String days = (String) daysCombo.getSelectedItem();

并创建一个Customer的构造函数,以便以下是真的:

Customer c = new Customer(room, meal, days);

答案 1 :(得分:0)

我假设您的客户对象包含三个名为roomIndex,mealIndex和daysIndex的成员,因为您执行此操作:Customer c = new Customer(roomIndex, mealIndex, daysIndex);

您发布的showAll方法不会按预期打印出值。这是因为myList中的每个元素都是customer的对象,而不是字符串。客户对象包含不同的字符串(roomindex,mealindex,daysindex),因此如果要打印它们,则需要在客户类中使用getter。完成后,您可以打印客户类的内容,如下所示:

for (int i = 0; i < myList.size(); i++) {
    System.out.println( myList.get(i).getRoomIndex() + " " + myList.get(i).getMealIndex() + " " + myList.get(i).getDaysIndex()+"\n");
  }

方法getRoomIndex等应该是Customer中返回字符串的方法,如下所示:

public String getRoomIndex(){
   return roomIndex;
}

编辑: 我错过了你只从comboBox获取索引,我的解决方案期望值而不是索引。您可以像Garbage在帖子中所说的那样立即获取该项目。方法getSelectedItem返回一个Object类型的对象,这就是他将它转换为字符串的原因。如果您获取的项目不是字符串,那么这可能是危险的,因此它可能不被视为防水解决方案,但可能在您的示例中起作用

答案 2 :(得分:0)

由于保留项目的索引,您可以调用的项目的值,并显示组合框中的值,如下所示:

public void showAll() {
  String displayRecords = ""; // empty string
  int roomIndex;
  int mealIndex;
  int daysIndex; 

  // retrieve all stored records in array list and store in variable
  for (int i = 0; i < myList.size(); i++) {
    roomIndex = ((Customer)(myList.get(i)).roomIndex;
    mealIndex = ((Customer)(myList.get(i)).mealIndex;
    daysIndex = ((Customer)(myList.get(i)).daysIndex;
    displayRecords = displayRecords + roomTypeCombo.getItemAt(roomIndex) + " " + 
      roomTypeCombo.getItemAt(mealIndex) + " " + roomTypeCombo.getItemAt(daysIndex)
     + "\n";
  }

  display.setText(displayRecords);
} // end of function

答案 3 :(得分:0)

在创建客户对象之前,为什么不打印roomIndex,mealIndex,daysIndex。只是为了看到在创建对象之前正确获取值。