Java / Swing Сохранить ввод в файл из нескольких полей JTextField - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь закодировать кадр, который получает от пользователя кучу параметров и сохраняет их в файл csv, а затем перенаправляет на новый кадр, который запускает моделирование, проблема используется для l oop для легко генерировать текстовые поля, однако я не знаю, как написать прослушиватель событий, который извлекает данные из всех текстовых полей, вот код:

       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]

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

IMHO, вам нужно использовать такую ​​структуру, как Map, чтобы сохранить ссылку на каждое TextField. Затем в вашем слушателе вы проанализируете свою структуру памяти, чтобы заполнить ваш 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

0 голосов
/ 05 мая 2020

Сохраняйте текстовые поля в списке и повторяйте его при сохранении.

 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 
        } 
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...