2015-10-18 99 views
-1

我想从文本文件填充GUI(包含图片)。该文本文件有12行文字,并且是这样写的: Matthew Smith;澳大利亚; 60,62,58,62,63,70; 50,52,56,57,60,56。目的是让名字填充jlist,因此当您选择名称时,国家将显示为'country'旁边的jlabel,文本字段将填充分数。我一直在尝试一些东西,但我所得到的只是每次在jList中的java.lang等。有人可以请我指出正确的方向吗?非常感谢从.txt文件填充jList和文本字段

pic of GUI

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); 

    } 
    } 
+0

欢迎来到Stack Overflow!请在您的文章中加入[MCVE](http://stackoverflow.com/help/mcve)(不是整个程序或网页)。 – brandaemon

+0

*“我一直在尝试一些东西,但我每次都在jList中得到的是java.lang等。”*该陈述隐含传达有用信息的模糊危险。1)始终复制/粘贴错误和异常输出! 2)请参阅[检测/修复代码块的悬挂紧密支架](http://meta.stackexchange.com/q/251795/155831),以解决问题,我不再担心修复问题。 –

+0

'frame.getContentPane()。setLayout(null);'3)Java GUI必须在不同的语言环境中使用不同的PLAF来使用不同的OS',屏幕大小,屏幕分辨率等。因此,它们不利于像素的完美布局。请使用布局管理器或[它们的组合](http://stackoverflow.com/a/5630271/418556)以及[white space]的布局填充和边框(http://stackoverflow.com/a/17874718/ 418556)。 –

回答

1

的DefaultListModel是:public class DefaultListModel<E> extends AbstractListModel<E>所以你可以做的是既可以创建像POJO类并重写toString方法来显示运动员姓名和对象添加到DefaultListModel否则只能创建在DLM如下:

DefaultListModel<String> DLM = new DefaultListModel<String>(); 
for(int i = 0; i < athletes.length; i++) 
    DLM.addElement(athletes[i]); 
listAthlete.setModel (DLM); 

然后在运动员名字的选择,你可以从相应的数组的细节与指数没有选择的列表项目。

+0

非常感谢,它的工作原理!你是最棒的。 – Nobby