Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
39 / 28 / 8
Регистрация: 14.04.2012
Сообщений: 249

Подгрузить fxml в компонент TabPane

28.05.2016, 12:54. Показов 2472. Ответов 5

Студворк — интернет-сервис помощи студентам
Подскажите как подгрузить fxml в компонент TabPane в первую или вторую вкладку
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.05.2016, 12:54
Ответы с готовыми решениями:

Как подгрузить fxml
Всем привет. Народ подскажите как реализовать данный замысел: Что должно быть: есть главный fxml в нем есть таблица и хочу в ячейку...

Вкладки в TabPane
Имеется программа, в которой пользователь может добавлять сколько захочет вкладок. Имеется панель с несколькими управляющими кнопками...

Скрыть один из Tab-ов в TabPane
Добрый день, использую TabPane. Необходимо скрыть один из табов. Пробовал делать следующим способом: ...

5
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
28.05.2016, 14:19
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
@Override
public void start(final Stage primaryStage) throws Exception {
    final TabPane tabPane = new TabPane();
 
    final BorderPane border = new BorderPane();
    border.setTop(button(tabPane));
    border.setCenter(tabPane);
 
    primaryStage.setScene(new Scene(border));
    primaryStage.setWidth(800);
    primaryStage.setHeight(600);
    primaryStage.show();
}
 
private Button button(final TabPane tabPane) {
    final Button button = new Button("add tab");
    button.setOnAction(e -> {
        final ObservableList<Tab> tabs = tabPane.getTabs();
        final Tab tab = loadTabFromFxml();
        tab.setText("From FXML " + (tabs.size() + 1));
        tabs.add(tab);
    });
    return button;
}
 
private Tab loadTabFromFxml() {
    final FXMLLoader loader = new FXMLLoader();
    try {
        return loader.load(new ByteArrayInputStream(
            "<?import javafx.scene.web.*?><?import javafx.scene.control.*?><Tab><content><HTMLEditor/></content></Tab>".getBytes(UTF_8)
        ));
    } catch (final IOException e) {
        throw new RuntimeException(e.getMessage(), e);
    }
}
1
39 / 28 / 8
Регистрация: 14.04.2012
Сообщений: 249
28.05.2016, 20:28  [ТС]
Не до конца понял как подгрузить.
Вот класс root
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
public class mainBackup extends Application {
    private Stage primaryStage;
    private SplitPane rootView;
 
    public static void main(String[] args) {
        launch(args);
    }
 
    @Override
    public void start(Stage primaryStage) {
        this.primaryStage = primaryStage;
 
        initRootView();
    }
 
    // инициализация главного окна
    public void initRootView()
    {
        try {
            // Load root layout from fxml file.
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(mainBackup.class.getResource("view/rootView.fxml"));
            rootView = (SplitPane) loader.load();
            // Show the scene containing the root layout.
            Scene scene = new Scene(rootView);
            primaryStage.setTitle("Резервное копирование 1.0");
            primaryStage.setMinHeight(400);
            primaryStage.setMinWidth(600);
            primaryStage.setScene(scene);
            showBackup();
 
            primaryStage.show();
        } catch (IOException e)
        {
            e.printStackTrace();
        }
    }
 
    // отобразить  backup.fxml на панели
    public void showBackup() {
        try{
 
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(mainBackup.class.getResource("view/backup.fxml"));
            AnchorPane backup = (AnchorPane) loader.load();
 
            // Подключение в панель TabPane
            rootView.getItems().
 
 
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
 
}
Далее rootView.fxml

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?xml version="1.0" encoding="UTF-8"?>
 
<?import javafx.scene.layout.*?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
 
<SplitPane dividerPositions="0.29797979797979796" maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
  <items>
    <AnchorPane maxWidth="180.0" minWidth="180.0" prefHeight="180.0" prefWidth="180.0">
         <children>
            <Button layoutX="14.0" layoutY="39.0" mnemonicParsing="false" text="+" textAlignment="CENTER" AnchorPane.leftAnchor="10.0" />
            <Label layoutX="41.0" layoutY="14.0" prefHeight="17.0" prefWidth="99.0" text="Список архивов" AnchorPane.leftAnchor="41.0" AnchorPane.rightAnchor="40.0" AnchorPane.topAnchor="10.0" />
            <TextField layoutX="5.0" layoutY="14.0" prefHeight="25.0" prefWidth="134.0" visible="false" AnchorPane.leftAnchor="40.0" AnchorPane.topAnchor="40.0" />
            <Label layoutX="45.0" layoutY="43.0" prefHeight="17.0" prefWidth="122.0" AnchorPane.rightAnchor="10.0" />
         </children></AnchorPane>
    <AnchorPane prefHeight="398.0" prefWidth="417.0">
         <children>
            <TabPane prefHeight="398.0" prefWidth="417.0" tabClosingPolicy="UNAVAILABLE" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
              <tabs>
                <Tab text="Резервное копирование">
                  <content>
                    <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
                           <children>
                              <Button layoutX="14.0" layoutY="14.0" mnemonicParsing="false" text="Где хранить архив?" AnchorPane.leftAnchor="10.0" AnchorPane.topAnchor="10.0" />
                              <Button layoutX="220.0" layoutY="10.0" mnemonicParsing="false" text="Что хранить в архиве?" AnchorPane.rightAnchor="52.0" AnchorPane.topAnchor="10.0" />
                              <Label layoutX="14.0" layoutY="45.0" prefHeight="17.0" prefWidth="34.0" text="Диск:" AnchorPane.leftAnchor="10.0" />
                              <Label layoutX="97.0" layoutY="45.0" prefHeight="17.0" prefWidth="93.0" text="не выбран" AnchorPane.leftAnchor="97.0" />
                              <ListView layoutX="188.0" layoutY="45.0" prefHeight="272.0" prefWidth="210.0" AnchorPane.bottomAnchor="52.0" AnchorPane.leftAnchor="188.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="45.0" />
                              <Label layoutX="10.0" layoutY="69.0" prefHeight="17.0" prefWidth="79.0" text="Размер диска:" AnchorPane.leftAnchor="10.0" />
                              <Label layoutX="97.0" layoutY="69.0" prefHeight="17.0" prefWidth="91.0" text="0 МБ" AnchorPane.leftAnchor="97.0" />
                              <Label layoutX="10.0" layoutY="93.0" text="Занято:" AnchorPane.leftAnchor="10.0" />
                              <Label layoutX="97.0" layoutY="93.0" prefHeight="17.0" prefWidth="93.0" text="0 МБ" AnchorPane.leftAnchor="97.0" />
                              <Label layoutX="10.0" layoutY="119.0" text="Свободно:" AnchorPane.leftAnchor="10.0" />
                              <Label layoutX="97.0" layoutY="119.0" prefHeight="17.0" prefWidth="92.0" text="0 МБ" />
                              <Label layoutX="10.0" layoutY="145.0" text="Выбрано файлов:" AnchorPane.leftAnchor="10.0" />
                              <Label layoutX="118.0" layoutY="145.0" prefHeight="17.0" prefWidth="71.0" text="0" AnchorPane.leftAnchor="115.0" />
                              <Label layoutX="10.0" layoutY="168.0" text="Архивировано:" AnchorPane.leftAnchor="10.0" />
                              <Label layoutX="118.0" layoutY="168.0" prefHeight="17.0" prefWidth="73.0" text="0" AnchorPane.leftAnchor="115.0" />
                              <Button layoutX="346.0" layoutY="330.0" mnemonicParsing="false" text="Запустить резервное копирование" AnchorPane.bottomAnchor="15.0" AnchorPane.rightAnchor="15.0" />
                              <ProgressBar layoutX="6.0" layoutY="333.0" prefHeight="18.0" prefWidth="174.0" progress="0.0" AnchorPane.bottomAnchor="18.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="233.0" />
                              <Label layoutX="13.0" layoutY="309.0" text="Выполнено:" AnchorPane.bottomAnchor="43.0" AnchorPane.leftAnchor="13.0" />
                              <Label layoutX="83.0" layoutY="309.0" prefHeight="17.0" prefWidth="54.0" text="0 %" AnchorPane.bottomAnchor="43.0" AnchorPane.leftAnchor="83.0" />
                           </children></AnchorPane>
                  </content>
                </Tab>
                <Tab text="Расписание">
                  <content>
                    <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
                           <children>
                              <RadioButton disable="true" layoutX="14.0" layoutY="45.0" mnemonicParsing="false" text="Ежечасно" AnchorPane.leftAnchor="14.0" />
                              <CheckBox layoutX="77.0" layoutY="14.0" mnemonicParsing="false" text="Использовать расписание для выбранного архива" AnchorPane.leftAnchor="77.0" AnchorPane.topAnchor="14.0" />
                              <RadioButton disable="true" layoutX="14.0" layoutY="81.0" mnemonicParsing="false" text="По дням" AnchorPane.leftAnchor="14.0" />
                              <CheckBox disable="true" layoutX="105.0" layoutY="81.0" mnemonicParsing="false" prefHeight="17.0" prefWidth="158.0" text="Понедельник" AnchorPane.leftAnchor="105.0" />
                              <CheckBox disable="true" layoutX="105.0" layoutY="109.0" mnemonicParsing="false" prefHeight="17.0" prefWidth="146.0" text="Вторник" AnchorPane.leftAnchor="105.0" />
                              <CheckBox disable="true" layoutX="105.0" layoutY="136.0" mnemonicParsing="false" prefHeight="17.0" prefWidth="134.0" text="Среда" AnchorPane.leftAnchor="105.0" />
                              <CheckBox disable="true" layoutX="105.0" layoutY="160.0" mnemonicParsing="false" prefHeight="17.0" prefWidth="134.0" text="Четверг" AnchorPane.leftAnchor="105.0" />
                              <CheckBox disable="true" layoutX="105.0" layoutY="185.0" mnemonicParsing="false" prefHeight="17.0" prefWidth="134.0" text="Пятница" AnchorPane.leftAnchor="105.0" />
                              <CheckBox disable="true" layoutX="105.0" layoutY="211.0" mnemonicParsing="false" prefHeight="17.0" prefWidth="144.0" text="Суббота" AnchorPane.leftAnchor="105.0" />
                              <CheckBox disable="true" layoutX="105.0" layoutY="241.0" mnemonicParsing="false" prefHeight="17.0" prefWidth="149.0" text="Воскресенье" AnchorPane.leftAnchor="105.0" />
                              <ComboBox disable="true" layoutX="103.0" layoutY="277.0" prefWidth="150.0" AnchorPane.leftAnchor="103.0" />
                           </children></AnchorPane>
                  </content>
                </Tab>
                  <Tab text="Восстановление">
                     <content>
                        <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
                           <children>
                              <Button layoutX="33.0" layoutY="46.0" mnemonicParsing="false" text="Выбрать архив" AnchorPane.leftAnchor="33.0" />
                              <Label layoutX="33.0" layoutY="83.0" prefHeight="17.0" prefWidth="365.0" text="Label" AnchorPane.leftAnchor="33.0" AnchorPane.rightAnchor="14.0" />
                              <RadioButton layoutX="14.0" layoutY="14.0" mnemonicParsing="false" selected="true" text="Восстановить всё" AnchorPane.leftAnchor="14.0" />
                              <Separator layoutX="14.0" layoutY="117.0" prefWidth="200.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" />
                              <RadioButton layoutX="14.0" layoutY="139.0" mnemonicParsing="false" text="Восстановить выбранные файлы и папки" />
                              <Button disable="true" layoutX="37.0" layoutY="172.0" mnemonicParsing="false" text="Выбрать файлы и папки" />
                              <Label layoutX="37.0" layoutY="210.0" text="Выбрано:" />
                              <Label layoutX="103.0" layoutY="210.0" text="0" />
                              <Separator layoutX="14.0" layoutY="248.0" prefWidth="200.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" />
                              <Button layoutX="338.0" layoutY="293.0" mnemonicParsing="false" text="Начать восстановление" AnchorPane.bottomAnchor="51.0" AnchorPane.rightAnchor="10.0" />
                              <ProgressBar layoutX="16.0" layoutY="297.0" prefHeight="18.0" prefWidth="223.0" progress="0.0" AnchorPane.bottomAnchor="54.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="175.0" />
                              <Label layoutX="19.0" layoutY="270.0" text="Выполнено:" AnchorPane.bottomAnchor="82.0" AnchorPane.leftAnchor="14.0" />
                              <Label layoutX="98.0" layoutY="270.0" text="0 %" AnchorPane.bottomAnchor="82.0" AnchorPane.leftAnchor="90.0" />
                           </children></AnchorPane>
                     </content>
                  </Tab>
                  <Tab text="Резервное копирование" />  
 
            СЮДА в коде надо подгрузить    backup.fxml
 
 
              </tabs>
            </TabPane>
         </children></AnchorPane>
  </items>
</SplitPane>
0
63 / 63 / 58
Регистрация: 19.01.2016
Сообщений: 152
29.05.2016, 21:18
Может так

XML
1
2
3
4
5
<Tab ....>
               <content>
                  <fx:include fx:id="backup" source="backup.fxml" />
               </content>
</Tab>
1
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
30.05.2016, 08:49
Цитата Сообщение от kostrorod Посмотреть сообщение
Не до конца понял как подгрузить.
Получаешь ссылку на таб, в который надо загрузить контент, а потом по аналогии с моим примером грузишь контент из fxml в компоненту, и вызываешь у таба setContent(Node)

Цитата Сообщение от Николай Б Посмотреть сообщение
Может так
Можно и так, но тогда этот fxml будет загружаться при создании главной сцены, если это не принципиально, то так будет проще. В моём случае можно не загружать компоненту, например, до первого выбора таба.
1
39 / 28 / 8
Регистрация: 14.04.2012
Сообщений: 249
30.05.2016, 22:56  [ТС]
мне желательно подгружать после клика на таб

Как мне получить ссылку на tabPane из

Java
1
private SplitPane rootView;
он уже создан в этой панеле (SplitPane)

Добавлено через 31 минуту
Я нашёл как получить ссылку на компонент и подгрузить файл.

Java
1
2
3
4
 ObservableList<Node> list = rootView.getItems();
                AnchorPane anchorPane = (AnchorPane) list.get(1);
                TabPane tabPane = (TabPane) anchorPane.getChildren().get(0);
                tabPane.getTabs().get(3).setContent((Node) FXMLLoader.load(this.getClass().getResource("view/backup.fxml")));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.05.2016, 22:56
Помогаю со студенческими работами здесь

Компонент, в который можно подгрузить HTML-код
Есть ли такой компонент, что-то типо Memo, но я туда мог подгрузить код HTML. К примеру, есть текст: Текст &lt;span...

Java FX+FXML
Есть двумерный массив в классе мейн int C = new int; C = 1; C = 1; C = 1; C = 1; C...

Окна + fxml
Создал программно меню программы. Обработчик кнопки: producer.setOnAction(new EventHandler&lt;ActionEvent&gt;() { ...

Не видит fxml
Создал view пытаюсь его загрузить , но выдает ошибку , пробывал по разному указать путь к fxml ,но никак не хочет ее видеть

Не видит FXML
Как видно из структуры проекта, нужный .fxml лежит во View. package Model (class Main) навсего его не видит.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru