title: JavaFX controller class not working
body: <p>I'm really struggling to understand JavaFX controllers, my aim is to write to a TextArea to act as a log.</p>
  
  <p>My code is below, but I want to be able to change values ETC from another class that I can call when needed. I have tried to create a controller class that extents Initializable but i cant get it to work. Could some one steer me in the correct direction?</p>
  
  <p>I want to move the @FXML code at the bottom to another class and it update the Scene.</p>
  
  <pre><code>package application;
  import javafx.event.ActionEvent;
  import javafx.scene.control.Label;
  import javafx.scene.control.TextArea;
  
  import java.io.IOException;
  import javafx.application.Application;
  import javafx.fxml.FXML;
  import javafx.fxml.FXMLLoader;
  import javafx.stage.Stage;
  import javafx.scene.Parent;
  import javafx.scene.Scene;
  
  
  public class Main extends Application {
      @Override
      public void start(Stage primaryStage) {
          try {
              Parent root = FXMLLoader.load(getClass().getResource("Root.fxml"));
              Scene scene = new Scene(root,504,325);
              scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
              primaryStage.setScene(scene);
              primaryStage.show();
          } catch(Exception e) {
              e.printStackTrace();
          }
      }
  
      public static void main(String[] args) {
          launch(args);
      }
  
      public Thread thread = new Thread(new webimporter());
  
      @FXML
      public Label runningLabel;
  
      @FXML 
      public TextArea txtArea;
  
      @FXML
      void runClick(ActionEvent event) throws IOException{
          changeLabelValue("Importer running...");
          thread.start();
  
      }   
  
      @FXML
      protected void stopClick(ActionEvent event){
          changeLabelValue("Importer stopped...");
          thread.interrupt();
      }           
  
      @FXML
      void changeLabelValue(String newText){
          runningLabel.setText(newText);
      }
  
      void changeTextAreaValue(String newText1){
          txtArea.setText(newText1);
      }
  }
  </code></pre>