Чтение данных из файла в текстовые поля Java - PullRequest
0 голосов
/ 31 мая 2018

Здравствуйте, у меня есть проблема
Я хотел бы прочитать данные из текстового файла, все данные в отдельной строке, это выглядит так

599
1188
1189
998
1998
2598
2899
3998
998
628
1178
1198
399
385
294
1380

У меня естьстолько, сколько строк - это текстовые поля
jTextField1, jTextField2 ...
Я бы хотел вставить эти данные ... Я буквально не знаю, как с этим справиться
jTextField1 должен иметь значение 599
jTextField2 плеча имеют значение 1188
Понятия не имею, как это сделать.Можете ли вы помочь мне, ребята, пожалуйста:)

1 Ответ

0 голосов
/ 31 мая 2018

Вы можете прочитать файл построчно, используя FileReader / BufferedReader или Сканер:

String filename = "path/to/the/file/with/numbers.txt";
try(BufferedReader reader = new BufferedReader(new FileReader(filename))) {
    String line;
    int currentIndex = 1;
    while((line = reader.readLine()) != null) {
        // see further on how to implement the below method
        setTextFieldValue(currentIndex, line.trim());
        currentIndex++
    }
}

Для реализации setTextFieldValue у вас есть несколько вариантов:

  1. writeрегистр переключателя для сопоставления индекса с соответствующим полем
  2. создание карты индекса -> поля или массива (как предложено @zlakad в комментариях)
  3. Использование отражения для получения полейпо их именам

Все вышеперечисленные варианты имеют свои плюсы и минусы, которые зависят от контекста.Ниже я покажу, как реализовать это с помощью отражения, потому что два других варианта довольно просты:

void setTextFieldValue(int index, String value) {
    // assuming the fields belong to the same class as this method
    Class klass = this.getClass(); 
    try {
        Field field = klass.getField("jTextField" + index);
        JTextField text = (JTextField)field.get(this);
        text.setText(value);
    } catch (NoSuchFieldException | IllegalAccessException e) {
        // throw it further, or wrap it into appropriate exception type
        // or just and swallow it, based on your use-case.
        // You can throw a custom checked exception
        // and catch in the caller method to stop the processing 
        // once you encounter index that has no corresponding field
    }
}
...