Я создаю графический интерфейс с помощью Scene Builder, и большинство моих сцен имеют один общий элемент (кнопка дома типа iOS внизу). Мне было интересно, можно ли определить этот компонент в отдельном файле fxml. Из проведенного мной исследования существует аналогичный процесс для объявления повторно используемого компонента, но только в том же файле fxml. Как я могу применить этот принцип для нескольких файлов fxml?JavaFX - многоразовый компонент FXML
4
A
ответ
0
Это может быть достигнуто путем создания отдельного файла FXML и добавления узла к нему с известным уникальным идентификатором, а затем доступа к этому узлу через идентификатор, сложной частью является то, как вы собираетесь делать это с широким спектром приложений? вероятно, создавая одну и ту же функцию во многих ваших контроллерах, но вот как вы получите кнопку из файла FXML.
Все кнопки выполняют одно и то же действие?
Parent root = FXMLLoader.load(getClass().getResource("fileName.fxml"));
ObservableList<Node> nodes = root.getChildrenUnmodifiable();
String _id = "testButton";
for (Node node : nodes) {
if (node.getId().equals(_id)) {
return node;
}
}
return null;
}
2
Вы можете сделать так:
<AnchorPane xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.example.MainController">
<children>
<fx:include fx:id="someId" source="NestedFXML.fxml"/>
</children>
<AnchorPane xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.example.NestedFXMLController">
</AnchorPane>
классы контроллеров:
public class MainController implements Initializable {
@FXML
private NestedFXMLController someIdController;
@Override
public void initialize(URL location, ResourceBundle resources) {
// TODO Auto-generated method stub
}
}
public class NestedFXMLController implements Initializable {
@Override
public void initialize(URL location, ResourceBundle resources) {
// TODO Auto-generated method stub
}
}
Ницца: Вложенный контроллер может быть введен через FXML аннотацию. Имя поля должно соответствовать строке атрибута fx: id + «Контроллер»!
Смежные вопросы
- 1. JavaFX FXML создать компонент/управления
- 2. Многоразовый компонент в SpringMVC
- 3. javafx как повторно использовать пользовательский компонент в разных FXML
- 4. Аргументы конструктора компонента fxml javafx
- 5. FXML: Включить пользовательский компонент
- 6. Многоразовый компонент для ожидания данных
- 7. Пользовательский или многоразовый компонент HTML
- 8. JavaFX включает fxml в fxml без контроллера
- 9. JavaFX - загрузить FXML в FXML без включения
- 10. JavaFx, проблемы с @FXML
- 11. JavaFX ComboBox FXML
- 12. Переключение экранов Javafx fxml
- 13. JavaFX InvocationTargetException FXML
- 14. Eclipse - JavaFX FXML LoadException
- 15. JavaFX - FXML в закладке
- 16. Ошибка загрузки JavaFX FXML
- 17. Файл JavaFX и FXML
- 18. Контроллер JavaFX FXML ClassNotFoundException
- 19. JavaFX FXML menuItem action
- 20. JavaFX .getProperties() в FXML
- 21. JavaFX FXML недопустимый тип
- 22. JavaFX MediaView в FXML
- 23. JavaFX 8 FXML отрицание
- 24. Пользовательский компонент JavaFX не отображается
- 25. JavaFX 8 Загрузить внешний FXML
- 26. Поддерживает ли JavaFX FXML XInclude?
- 27. JavaFX - Как получить контроллер FXML?
- 28. JavaFX 2.0 FXML Child Windows
- 29. javafx: fxml: элементы отображения дважды
- 30. JavaScript upcall для JavaFX FXML
Как насчет использования BorderPane.The кнопка будет внизу, и вы измените только центр с файлами fxml. – GOXR3PLUS
Простой и эффективный! Спасибо, я не думал об этом. –