我正在尝试阅读我的highscore.txt文件,以便我可以在我的游戏的高分菜单上显示它。 我的highscore.txt的内容是SCORE和NAME。例如:
150 John
100 Charice
10 May
所以我编写以下代码来读取文本区域中的文件,但无法读取该文件。我的代码如下:
public HighScores(JFrame owner) {
super(owner, true);
initComponents();
setSize(500, 500);
setLocation(300, 120);
getContentPane().setBackground(Color.getHSBColor(204, 204, 255));
File fIn = new File("highscores.txt");
if (!fIn.exists()) {
jTextArea1.setText("No high scores recorded!");
} else {
ArrayList v = new ArrayList();
try {
BufferedReader br = new BufferedReader(new FileReader(fIn));
String s = br.readLine();
while (s != null) {
s = s.substring(2);
v.add(s);
s = br.readLine();
}
br.close();
} catch (IOException ioe) {
JOptionPane.showMessageDialog(null, "Couldn't read high scores file");
}
// list to display high scores
JList jlScores = new JList(v); //there's a problem here. I don't know why
jTextArea1.add(jlScores, BorderLayout.CENTER);
}
}
我做错了什么???我怎样才能完成这项工作>。你的帮助将受到高度赞赏。提前谢谢。
答案 0 :(得分:3)
您正在将文件的内容读入ArrayList v
,然后在填充之后就无所事事了。
显示分数的代码正在向JList
添加空jTextArea1
。您可能希望使用JList
的内容填充ArrayList v
。
答案 1 :(得分:1)
您正尝试使用ArrayList对象初始化JList。
JList jlScores = new JList(v);
我认为这可能是问题,因为没有带有ArrayList的JList构造函数,有one with Vector。
答案 2 :(得分:1)
JList jlScores = new JList(v); //there's a problem here. I don't know why
没有一个构造函数接受一个arraylist,看看javadoc中的构造函数。相反,将arraylist转换为数组,然后在构造函数中使用它。
至于如何将arraylist转换为数组,我会把它作为练习,因为这是一个功课,谷歌搜索应该没有问题!
答案 3 :(得分:1)
如JList Tutorial中所述,我建议使用ListModel填充JList,如下所示:
//create a model
DefaultListModel listModel = new DefaultListModel();
//now read your file and add each score to the model like this:
listModel.addElement(score);
//after you have read your file, set the model into the JList
JList list = new JList(listModel);