2015-10-18 35 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