簡體   English   中英

Java/Swing 將輸入從多個 JTextField 保存到文件中

[英]Java/Swing Save input to a file from multiple JTextField

我正在嘗試編寫一個框架,該框架從用戶那里獲取一堆參數並將它們保存到 csv 文件中,然后重定向到運行模擬的新框架,但問題是使用 for 循環輕松生成文本字段我不知道如何編寫從所有文本字段中檢索數據的事件偵聽器,代碼如下:

       private void ZoneTexte(String texte,JPanel pan) {
       JLabel label=new JLabel();
       label.setText(texte);
       JTextField text = new JTextField(20);
       pan.add(label);
       pan.add(text);
   }
   /**
    * 
    */
   private void SaveParam() {
       String [] param= {"Nom Milieu","ProbaRoche","ProbaHerbe","Qherbe","DistCaractHerbe","FacteurHerbe","RayonLac","ProfondeurMaxLac","SigmaLac"};
       JLabel label=new JLabel();
       label.setText("Définir vos propres paramètres de simulation:");
       EditPanel.add(label);
       for(String s:param) {
           JPanel pan1= new JPanel();
           ZoneTexte(s+" :",pan1);
           EditPanel.add(pan1);
       }
       JButton save=new JButton();
       save.setText("Enregistrer et démarrer la simulation");
       EditPanel.add(save);
       save.addActionListener(new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub


        }
           });
   }
   [The file format that i desire is this][1]

將文本字段保留在列表中,並在保存時對其進行迭代。

 List<JTextField> fieldList = new ArrayList <>() ;

...
    EditPanel.add(pan1)
    fieldList.add(pan1);
}

 save.addActionListener(e -> {
        for (JTextField field : fieldList) {
             file.writeString(field.getText); // however you want to write it 
        } 
 }

恕我直言,您需要使用像 Map 這樣的結構來保持對每個 TextField 的引用。 然后在你的監聽器中,你將解析你的 memory 結構,以便填充你的 csv。

// Somewhere in your init class
var fieldsMap = new HashMap<String,TextField>();

// In ZoneTexte method
fieldsMap.put(texte,text);      

// In your listener
var value = mapField.get("ProbaRoche").getText();

或許,為可以在代碼的不同位置使用的字段使用唯一的鍵。

HTH

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM