Ответы пользователя по тегу JavaFX
  • Как обратиться к переменным из Controller(javafx) из других классов?

    notAquarius
    @notAquarius
    3 метра под уровнем грунта
    Идея проста, ты должен получить экземпляр класса Controller

    FXMLLoader fxmlLoader = new FXMLLoader(бла бла бла бла);
    Controller controller = (Controller) fxmlLoader.getController();


    Ведь твой контроллер - это по сути обычный класс, плюс он работает в другом потоке.
    Теперь у тебя есть объект класса Controller
    Далее в контроллере создай метод, который отвечает за то, чтобы изменять твой TextArea;
    (имя метода может быть любое)

    public void setTextInTextArea(String string){
    //Далее ты можешь вызывать этот метод, но т.к. он вызывается из другого потока , в твоем //
    //случае главного , ты должен написать так:
    Platform.runLater(()->{
    //Здесь уже изменяй свой TextArea
    });}


    Это ты уже меняешь текст в TextArea из своего метода Main
    contrloller.setTextInTextArea("Твой текст");

    @FXML
    private TextField lineOfNumbers = new TextField();

    @FXML
    private Button addInfo1 = new Button();

    @FXML
    public static TextArea sortedNumbers = new TextArea();

    Это не правильно!

    @FXML
    private TextField lineOfNumbers ;

    @FXML
    private Button addInfo1 ;

    @FXML
    public TextArea sortedNumbers;

    Это правильно!

    Эти переменные уже неявно проинициализированы, тебе не нужно их инициализировать, нужно лишь объявить, не нужно вешать Static на них -это плохо и некрасиво и вообще фу..

    UPD: Я мог допустить синтаксические ошибки кода, поэтому Sorry, под рукой нет Пк, пишу в дороге. Ну и не переписывай код бездумно, а попробуй вникнуть в суть. Прочитай про многопоточность в JavaFx, как работает FXMLLoader, про @FXML переменные в контроллере. Удачи.
    Ответ написан
    Комментировать