@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
  • Вопрос задан
  • 310 просмотров
Пригласить эксперта
Ответы на вопрос 1
все придется делать руками через getUserData / setUserData

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

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

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

Похожие вопросы