从 .txt 文件填充 jList 和文本字段
populate jList and text fields from a .txt file
我正在尝试从文本文件填充 GUI(包括下面的图片)。文本文件有 12 行文本,写法如下:
马修·史密斯;澳大利亚;60,62,58,62,63,70;50,52,56,57,60,56。目的是让名称填充 jlist,因此当您 select 名称时,国家/地区将显示为 'country' 旁边的 jlabel,并且文本字段将填充分数。我一直在尝试一些事情,但每次在 jList 中我得到的只是 java.Lang 等。有人可以给我指出正确的方向吗?非常感谢
private static Scanner inGui;
public Stage3() {
initialize();
}
private void readFile() throws IOException {
BufferedReader reader = new BufferedReader(new FileReader("Stage3Scores.txt"));
String line = "";
int iScore = 0;
while((line = reader.readLine()) != null) {
String[] splitLine = line.split(";");
athletes[iScore] = splitLine[0];
countries[iScore] = splitLine[1];
scores[iScore] = splitLine[2];
iScore++;
}
reader.close();
lblDisplayCountry = new JLabel("l");
lblDisplayCountry.setBounds(101, 119, 186, 24);
frame.getContentPane().add(lblDisplayCountry);
listAthlete = new JList();
listAthlete.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
//listAthlete.setText(athletes[listAthlete.getSelectedIndex()]);
lblDisplayCountry.setText(athletes[listAthlete.getSelectedIndex()]);
}
});
listAthlete.setBounds(101, 187, 186, 205);
frame.getContentPane().add(listAthlete);
JButton btnLoadAthlete = new JButton("Load");
btnLoadAthlete.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
DefaultListModel DLM = new DefaultListModel();
DLM.addElement(""+ athletes +"");
DLM.addElement(""+ countries +"");
DLM.addElement("" + scores + "");
listAthlete.setModel (DLM);
}
});
btnLoadAthlete.setBounds(142, 422, 89, 23);
frame.getContentPane().add(btnLoadAthlete);
}
}
DefaultListModel 是:public class DefaultListModel<E> extends AbstractListModel<E>
所以你可以做的是创建一个像 POJO 的 class 并覆盖 toString 方法以显示运动员姓名并将对象添加到 DefaultListModel 否则只创建 DLM如下:
DefaultListModel<String> DLM = new DefaultListModel<String>();
for(int i = 0; i < athletes.length; i++)
DLM.addElement(athletes[i]);
listAthlete.setModel (DLM);
然后在选择运动员姓名时,您可以从适当的数组中获取详细信息,其中包含所选列表项的索引号。
我正在尝试从文本文件填充 GUI(包括下面的图片)。文本文件有 12 行文本,写法如下: 马修·史密斯;澳大利亚;60,62,58,62,63,70;50,52,56,57,60,56。目的是让名称填充 jlist,因此当您 select 名称时,国家/地区将显示为 'country' 旁边的 jlabel,并且文本字段将填充分数。我一直在尝试一些事情,但每次在 jList 中我得到的只是 java.Lang 等。有人可以给我指出正确的方向吗?非常感谢
private static Scanner inGui;
public Stage3() {
initialize();
}
private void readFile() throws IOException {
BufferedReader reader = new BufferedReader(new FileReader("Stage3Scores.txt"));
String line = "";
int iScore = 0;
while((line = reader.readLine()) != null) {
String[] splitLine = line.split(";");
athletes[iScore] = splitLine[0];
countries[iScore] = splitLine[1];
scores[iScore] = splitLine[2];
iScore++;
}
reader.close();
lblDisplayCountry = new JLabel("l");
lblDisplayCountry.setBounds(101, 119, 186, 24);
frame.getContentPane().add(lblDisplayCountry);
listAthlete = new JList();
listAthlete.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
//listAthlete.setText(athletes[listAthlete.getSelectedIndex()]);
lblDisplayCountry.setText(athletes[listAthlete.getSelectedIndex()]);
}
});
listAthlete.setBounds(101, 187, 186, 205);
frame.getContentPane().add(listAthlete);
JButton btnLoadAthlete = new JButton("Load");
btnLoadAthlete.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
DefaultListModel DLM = new DefaultListModel();
DLM.addElement(""+ athletes +"");
DLM.addElement(""+ countries +"");
DLM.addElement("" + scores + "");
listAthlete.setModel (DLM);
}
});
btnLoadAthlete.setBounds(142, 422, 89, 23);
frame.getContentPane().add(btnLoadAthlete);
}
}
DefaultListModel 是:public class DefaultListModel<E> extends AbstractListModel<E>
所以你可以做的是创建一个像 POJO 的 class 并覆盖 toString 方法以显示运动员姓名并将对象添加到 DefaultListModel 否则只创建 DLM如下:
DefaultListModel<String> DLM = new DefaultListModel<String>();
for(int i = 0; i < athletes.length; i++)
DLM.addElement(athletes[i]);
listAthlete.setModel (DLM);
然后在选择运动员姓名时,您可以从适当的数组中获取详细信息,其中包含所选列表项的索引号。