2015-07-06 3 views
1

Итак, у меня есть регулярный компонент, простирающийся от BorderPane, и я хочу добавить его в некоторый код FXML. Я получаю java.lang.IllegalArgumentException: Unable to coerce SettingsTab to class javafx.scene.Node.SettingsTab расширяет BorderPane:Добавить обычный узел JavaFX в FXML

public class SettingsTab extends BorderPane { ... 

Я пытаюсь включить его, как это:

<Tab fx:id="settingsTab" text="%ui.gui.settings.title" content="SettingsTab"/> 

Код FXML и класс находятся в одном пакете/директории.

Я относительно новичок в FXML и не очень хорошо знаком с синтаксисом, поэтому я не уверен, как это сделать.

я могу включать FXML файлы, как это, но я хочу, чтобы включить файл класса:

<Tab fx:id="scheduleTab" text="%ui.gui.schedule.title"> 
     <fx:include source="ScheduleTab.fxml"/> 
</Tab> 

ответ

1

Вкладка нуждается в содержание тега, как это и не в качестве значения атрибута.

<TabPane> 
    <Tab fx:id="settingsTab" text="%ui.gui.settings.title"> 
    <content> 
     <BorderPane></BorderPane> 
    </content> 
    </Tab> 
</TabPane> 

А в вашем случае:

<TabPane> 
    <Tab fx:id="settingsTab" text="%ui.gui.settings.title"> 
    <content> 
     <SettingsTab></SettingsTab> 
    </content> 
    </Tab> 
</TabPane> 

И вам нужно импортировать в вашем FXML для пользовательского компонента:

<?import my.custom.package.SettingsTab ?>