我理解如何做到这一点的基础知识。如果我在文本文件中有以下内容:(每个数字代表一个新行,实际上不在文件中)
等等,使用this question/answer中的示例,我可以很好地填充JComboBox
列表。它将行的字符串添加为combobox
选项。
我的问题是我没有使用看起来像上面的文本文件,而是看起来像这样:
数字是价格,我必须稍后转换为双倍。但是从该文本文件中,价格将包含在JComboBox
中,这是我不希望发生的事情。有没有办法指定每一行的第一个字符串?我在文件中每行不会超过2个字符串。
答案 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