2014-09-21 4 views
0

Я использую eclipse & сценатор.javafx - вкладки init (вкладки) при запуске

Я определил главное окно следующим образом:

enter image description here

Я хочу, чтобы определить «Исходящие сообщения» вкладку с X (X рассчитывается по времени выполнения) элементов (элементы, определенные в разные fxml).

Когда я создаю главное окно:

private Stage primaryStage; 
private AnchorPane rootLayout; 

public void start(Stage primaryStage) { 
    this.primaryStage = primaryStage; 
    this.primaryStage.setTitle("ABC"); 

    try { 
     // Load root layout from fxml file. 
     FXMLLoader loader = new FXMLLoader(); 
     loader.setLocation(MainApp.class.getResource("MainLayout.fxml")); 
     rootLayout = (AnchorPane) loader.load(); 

     // Show the scene containing the root layout. 
     Scene scene = new Scene(rootLayout); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

Как я могу обновить «Исходящие сообщения» вкладки, как я описал выше?

Благодаря

+0

вкладка 'Исходящий messages' имеет ли свой' FXML'? – ItachiUchiha

+0

Моя цель - создать вкладку исходящих сообщений из X одинаковых элементов (каждый элемент имеет собственный файл fxml) – user3668129

ответ

0

Вы можете использовать <fx:include> внутри FXML для Outgoing Messages. Это автоматически загрузит X-номер fxml перед загрузкой основного FXML. После того, как все загруженные FXML загружены, подготовлен и показан FXML для Outgoing Messages.

Update

Если у вас есть динамическое увеличение/уменьшение elemtents, используйте initialize() в Outgoing Messages для заполнения элементов внутри него вместо того, чтобы использовать <fx:incude>.

Позволяет рассмотреть (вы можете иметь свою собственную логику) ваш Outgoing Messages имеет VBox, который должен быть заполнен с динамическим нет элементов (BorderPane в этом случае), который находится внутри X.fxml (Вы можете иметь различный FXML или вы можете создать собственный контроль во время выполнения и добавить его):

pubic class OutgoingMessagesController implements Initializable { 

    @FXML 
    private VBox vbox; 

    public void initialize(java.net.URL location, java.util.ResourceBundle resources) { 

     //Whatever your logic is, I am considering a dynamic number here 

     for(int i=0; i<dynamicNumber; i++){ 
      BorderPane borderPane = FXMLoader.load(getClass().getResource("X.fxml")); 
      vbox.getChildren.add(borderPane); 
     } 
    } 
} 
+0

Я не могу использовать beacuse Я знаю X во время выполнения (X может быть 3 при попрошайничестве и изменить на 9 и ... – user3668129

+0

Я обновил ответ, дайте мне знать, если вы ищете что-то еще – ItachiUchiha

+0

Спасибо, это поможет. Но как я могу создать другой контроллер для разных вкладок? (Правильно ли использовать fx: include и выбрал контроллер через построитель сцен, или есть лучший способ (лучшее логическое решение)? – user3668129

Смежные вопросы