@lonata

Как послать текст из label одного контроллера в label другого контроллера в JavaFX?

Пишу программу с JavaFX и Scene Builder

Имеется главный класс Main который запускает программу и открывает главное окно контроллера (Controller).

public class Main extends Application {


  public static void main(String[] args) {
    launch(args);
  }

  @Override
  public void start(Stage primaryStage) throws Exception {
    try {

      Parent root = FXMLLoader.load(getClass().getResource("/card/card.fxml"));
      Scene scene = new Scene(root, 1600, 600);
      primaryStage.setScene(scene);
      scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm());
      primaryStage.initStyle(StageStyle.UNDECORATED);
      primaryStage.setMaximized(true);
      primaryStage.setResizable(true);


      primaryStage.getIcons().add(new Image("card/resources/logo-icon.png"));
      primaryStage.show();

        //adding resize and drag primary stage
        ResizeHelper.addResizeListener(primaryStage);



      //assign ALT+ENTER to maximize window
      final KeyCombination kb = new KeyCodeCombination(KeyCode.ENTER, KeyCombination.CONTROL_DOWN);
      scene.addEventHandler(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
        @Override
        public void handle(KeyEvent event) {
          if (kb.match(event)) {
            primaryStage.setMaximized(!primaryStage.isMaximized());
            primaryStage.setResizable(true);

          }
        }
      });

    } catch (Exception e) {
      e.printStackTrace();
    }

  }

}


В главном окне есть label и также button, при нажатии на который появляется окно с другим контроллером(FontController)

@FXML private Button btnFont;
@FXML  private Label category1
@FXML
  void changeFont(ActionEvent event) {
    try {
      FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("font.fxml"));
      Parent rootFont = (Parent) fxmlLoader.load();
      Stage stage = new Stage();
      stage.setTitle("Select Font");
      stage.setScene(new Scene(rootFont));
      stage.show();    

    } catch (Exception e) {
      System.out.println("can't load new window");
    }

  }


В контроллере FontController есть лейбл и кнопка "OK":

@FXML  private Label fontLabel;
@FXML  private Button btnFontOk;


Подскажите пожалуйста, как сделать,чтобы при нажатии на кнопку ОК, текст из лейбла этого контроллера отправлялся на Controller и отобразился в label?

hf4WX.jpgEoOhs.jpg
  • Вопрос задан
  • 32 просмотра
Пригласить эксперта
Ответы на вопрос 1
@sergueik
все придется делать руками через getUserData / setUserData

www.java2s.com/Tutorials/Java/JavaFX/0430__JavaFX_...

они на бумаге только для некоторых на деле много для каких widgets works,
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
BostonGene Москва
от 100 000 до 200 000 руб.
Digital Horizon Москва
от 150 000 руб.
8BIT GROUP Москва
от 180 000 до 280 000 руб.