У меня есть программа JavaFX 8 (для JavaFXPorts cross platfrom), в значительной степени созданная для того, чтобы делать то, что я хочу, но на один шаг. Программа считывает текстовый файл, подсчитывает строки, чтобы установить случайный диапазон, выбирает случайное число из этого диапазона и считывает эту строку для отображения.
The error is: local variables referenced from a lambda expression must be final or effectively final
button.setOnAction(e -> l.setText(readln2));
Я немного новичок в java, но кажется, что я использую Lambda или нет, чтобы иметь следующий случайный линейный дисплей в Label l
, my button.setOnAction(e → l.setText(readln2));
линия ожидает статическое значение.
Любые идеи, как я могу настроить то, что мне нужно, просто сделать следующее значение отображения var readln2 каждый раз, когда я нажимаю кнопку на экране?
Спасибо заранее, и вот мой код:
String readln2 = null;
in = new BufferedReader(new FileReader("/temp/mantra.txt"));
long linecnt = in.lines().count();
int linenum = rand1.nextInt((int) (linecnt - Low)) + Low;
try {
//open a bufferedReader to file
in = new BufferedReader(new FileReader("/temp/mantra.txt"));
while (linenum > 0) {
//read the next line until the specific line is found
readln2 = in.readLine();
linenum--;
}
in.close();
} catch (IOException e) {
System.out.println("There was a problem:" + e);
}
Button button = new Button("Click the Button");
button.setOnAction(e -> l.setText(readln2));
// error: local variables referenced from a lambda expression must be final or effectively final