Не понимаю, как присвоить значение String c TextField.
//String a = new String();
Button btn2 = new Button("Открыть файл");
btn2.setPrefHeight(btnH);
btn2.setLayoutY(10);
btn2.setLayoutX(10+btnW+20);
btn2.setOnAction(event -> String a = edit.getText());
Вы создаёте строку a внутри анонимного класса и присваиваете ей значение. После выполнения этой строчки кода строка никуда не сохраняется, а к анонимному классу уже нет доступа.
Вам нужно создать строку в теле класса. Также, так как в анонимных классах нельзя использовать не final или effectively final переменные и, соответственно, изменять объявлённые вне анонимного класса переменные там тоже нельзя, вам нужно создать метод, сохраняющий значение TextField в строку.
// в теле класса
TextField edit = new TextField();
String a = "";
void saveA() {
a = edit.getText();
}
// в теле метода
btn2.setOnAction(event -> saveA());
Продвижение своими сайтами как стратегия роста и независимости