2016-06-03 4 views
-1

У меня есть BorderPane в моем файле fxml. И мне нужно добавить метки к своему центру из кода в классе контроллера. Как я понял, мне нужно сделать это в методе initialize(), но я не узнал, как это реализовать.JavaFX dynamycly добавляет метки в панель, определенные в файле fxml

P.S. Я не хочу добавлять их статически в файл fxml, потому что их количество различно каждый раз, это может быть 5 или может быть 20. В этом случае мне придется добавить их максимальную сумму и сделать их невидимыми. Но я не думаю, что это было бы лучшим решением.

+0

Возможно, вам придется делать это без fxml, было бы намного проще. С fxml это не невозможно (поскольку я не знаю, какой у вас сценарий), но вы можете попробовать добавить их в гибкую коллекцию, такую ​​как ArrayList (добавьте, однако, много ярлыков, которые вы хотите перечислить, а затем перебираете список массивов, добавляя любые метки присутствуют в нем). Конечно, могут быть лучшие способы сделать это, это тот, который сначала бросается в глаза. –

ответ

0

Вам необходимо связать контроллер с вашим FXML, а затем создать метод инициализации, который будет вызываться. Вам нужно будет аннотировать его с помощью аннотации @FXML.

Вам также необходимо связать свою панель с аннотацией @FXML. Здесь я предполагаю, что это myBorderPane.

@FXML 
private void initialize() { 
    //Create the label 
    Label myLabel = new Label("Will go in the Center Pane"); 
    myBorderPane.setCenter(myLabel); 
} 

Очевидно, что это просто скопирует одну метку в вашу панель. Вам, вероятно, потребуется создать некоторую логику здесь, чтобы создать то, что вам нужно. Вам также необходимо позаботиться о макете и т. Д.

Надеюсь, это указывает на то, что вы в правильном направлении.

+0

Но человек, я уже пробовал такой вариант и ничего не получил Был мой код: ' ' public class Controller { @FXML BorderPane pane; @FXML private void initialize() { pane.setCenter (новый ярлык («XYZ»)); } } ' – HadJower5

+0

Если вы пробовали код, и он не работает, вам нужно поставить его в свой вопрос. Покажите достаточно кода (FXML, контроллер и основной класс), чтобы воспроизвести проблему. –

+0

Я нашел свою ошибку - я не добавлял Controller в качестве параметра панели в файл fxml. Теперь все работает нормально. – HadJower5

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