尝试使用文件读取器从文本文件创建JComboBox

时间:2014-03-11 21:30:18

标签: java swing file-io jcombobox

我理解如何做到这一点的基础知识。如果我在文本文件中有以下内容:(每个数字代表一个新行,实际上不在文件中)

  1. 第1项
  2. 项目2
  3. 第3项
  4. 等等,使用this question/answer中的示例,我可以很好地填充JComboBox列表。它将行的字符串添加为combobox选项。

    我的问题是我没有使用看起来像上面的文本文件,而是看起来像这样:

    1. Item1 6.00
    2. Item2 8.00
    3. Item3 9.00
    4. 数字是价格,我必须稍后转换为双倍。但是从该文本文件中,价格将包含在JComboBox中,这是我不希望发生的事情。有没有办法指定每一行的第一个字符串?我在文件中每行不会超过2个字符串。

1 个答案:

答案 0 :(得分:5)

您应该创建一个封装此数据的类,包括项目名称和价格,然后使用此类的对象填充JComboBox。如,

public class MyItem {
  private String itemName;
  private double itemCost;
  // any more fields?

  public MyItem(String itemName, double itemCost) {
    this. ///.....  etc
  }  

  // getters and setters
}

为了让它看起来不错,有一种快速而又肮脏的方法:为类提供一个toString()方法,只打印出项目名称,例如,

@Override
public String toString() {
  return itemName;
}

...或更具参与性且可能更清晰的方式:为JComboBox提供仅显示项目名称的渲染器。


修改
你问:

  

好的,只是不确定我如何通过文件传递值。

您将解析文件并使用数据创建对象。伪代码:

Create a Scanner that reads the file
while there is a new line to read
  read the line from the file with the Scanner
  split the line, perhaps using String#split(" ")
  Get the name token and put it into the local String variable, name
  Get the price String token, parse it to double, and place in the local double variable, price
  Create a new MyItem object with the data above
  Place the MyItem object into your JComboBox's model.
End of while loop
close the Scanner