Scene Builder - Повторное использование пользовательских элементов управления - PullRequest
0 голосов
/ 27 апреля 2018

Я уже несколько недель пытаюсь найти обходные пути, и я начинаю сдаваться. Я должен делать что-то в корне неправильно. Во всяком случае, это моя ситуация. Ранее я создал небольшую программу с использованием JavaFX, но теперь обнаружил Scene Builder и хочу собрать все заново, используя этот инструмент. Проект включает в себя несколько компонентов, которые часто используются повторно, например, приведенный ниже. Он состоит из метки, ползунка, текстового поля и другого пользовательского компонента, InfoIcon.

enter image description here

Я понял, что готово - импортировать пользовательский компонент (InfoIcon) в виде файла .jar в Scene Builder при создании моего SliderVariable, как я его называю. Это прекрасно работает, и я могу запустить небольшую демонстрацию моего SliderVariable из Eclipse, создав основной метод, сцену и сделав SliderVariable в этой сцене. Как уже упоминалось, это прекрасно работает. Импорт или включение InfoIcon не делает то, что я хочу (я не думаю), потому что тогда я не могу легко внести изменения в InfoIcon (или его контроллер) и обновить свой SliderVariable, а затем увидеть эффекты в конечном продукте.

Проблемы возникают, когда я хочу сделать еще один шаг вперед и использовать свою переменную SliderVariable в Scene Builder. Я делаю как с InfoIcon. Я экспортирую переменную своего ползунка в неисполняемый файл jar, а затем импортирую его в Scene Builder. Здесь Scene Builder жалуется, что не может найти какие-либо компоненты пользовательского интерфейса и поэтому не может импортировать его. Я обнаружил, что это потому, что когда я экспортирую переменную SliderVariable в виде jar-файла, он также не упаковывает свои зависимости, что означает, что InfoIcon не связывается с ним, и что компилятор не может найти этот компонент, когда я пытаюсь его использовать.

Я пытался решить эту проблему с помощью FatJar, который я не могу заставить работать (и кажется, что он больше не используется). Я пробовал Maven, где я не мог импортировать зависимость проекта InfoIcon от Maven в FXML SliderVariable. Наконец, я также попытался просто не импортировать jar, а вместо этого включить исходный код InfoIcon в отдельный пакет SliderVariable, но затем я не смог импортировать его в свой FXML. Я в отчаянии. Что обычно делают люди, если они хотят повторно использовать пользовательские компоненты со своими собственными контроллерами в Scene Builder? Это даже сделано? Должен ли я просто сдаться: '(?

Этот громоздкий пост должен быть очень запутанным, но я не знаю, как сделать его понятнее. Буду признателен за любые ответы, и если вы не уверены, что этот форум является подходящим местом для публикации чего-либо подобного (а это, вероятно, не так), пожалуйста, укажите мне в другое место, где мне больше рады.

Большое спасибо.

РЕДАКТИРОВАТЬ 1: Я добавил папку в свой проект под названием Зависимости. Здесь я помещаю копию (не ссылку) на мой InfoIcon.jar.

enter image description here

Затем я добавляю этот файл .jar в путь сборки и удаляю старый. Затем я вхожу в SceneBuilder и повторно импортирую банку InfoIcon, но на этот раз из папки «Зависимости», которую я только что создал. На этом этапе небольшой тест проекта, который я сделал, все еще работает нормально. Затем я экспортирую как файл JAR со следующими настройками и нажимаю "Готово".

enter image description here

Затем я пытаюсь импортировать его в Scene Builder, и Scene Builder сообщает, что не может найти никаких компонентов пользовательского интерфейса.

РЕДАКТИРОВАТЬ 2: я должен выбрать эти пункты?

enter image description here

Обратите внимание, что файл JAR находится в зависимостях, но также и в ссылочных библиотеках (которые здесь не видны). Этот тип выбора позволяет Scene Builder находить и импортировать InfoIcon, но не SliderVariable.

1 Ответ

0 голосов
/ 27 апреля 2018

Когда вы экспортируете InfoIcon, вы можете просто выбрать пакеты и классы, связанные с ним, в обозревателе пакетов Eclipse (или в других похожих представлениях обозревателя) и выбрать экспорт.

Аналогично, когда вы пытаетесь экспортировать SliderVariable элемент управления, вам нужно выбрать все, что вы выбрали в InfoIcon, поверх других файлов, которые необходимы для SliderVariable самого элемента управления.

Если InfoIcon импортируется в проект SliderVariable в виде файла JAR, то вам потребуется вручную выбрать этот файл JAR во время экспорта SliderVariable.

...