2016-04-17 3 views
0

Я создал собственный пользовательский элемент управления для JavaFX. Он работает хорошо, когда я добавляю его вручную в файл FXML. И он «невидим» для Java Scene Builder, когда я пытался его импортировать. Итак, у меня есть следующий код (очень упрощенный вариант): MyTab.fxmlПользовательская вкладка JavaFX Scene Builder

<?xml version="1.0" encoding="UTF-8"?> 

<?import javafx.scene.control.*?> 
<?import javafx.scene.layout.* ?> 
<?import tafm.javafx.controls.MyTab?> 


<fx:root type="javafx.scene.control.Tab" xmlns:fx="http://javafx.com/fxml"> 
</fx:root> 

MyTab.java

package tafm.javafx.controls; 

import javafx.fxml.FXMLLoader; 
import javafx.scene.control.Tab; 

import java.io.IOException; 

public class MyTab extends Tab { 

    public MyTab() { 
     FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("MyTab.fxml")); 
     fxmlLoader.setRoot(this); 
     fxmlLoader.setController(this); 
     fxmlLoader.setClassLoader(getClass().getClassLoader()); 
     try { 
      fxmlLoader.load();    
     } catch (IOException exception) { 
      throw new RuntimeException(exception); 
     } 
    } 
} 

У меня есть построить файл фляги с этим элементом управления и попытался импортировать это в JavaFX Scene Builder 2.0. Он импортируется только с одной ошибкой «Не узел: tafm.javafx.controls.MyTab.class», и нет доступного элемента управления MyTab.

Тогда я изменить этот класс (вместе с FXML) как:

public class MyTab extends HBox 

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

ответ

0

Tab в JavaFX не наследуется от Node. Из сообщения, которое вы получаете, также ясно.

Все пользовательские элементы управления должны быть частью графика сцены, т.е. на основе Node. Предпочтительно, чтобы все пользовательские элементы управления наследовали от Control, что упростит и стандартизирует их разработку.

+0

Это ясно. Но существует ли какое-то обходное решение? Как работает SB? Он содержит вкладку в списке управления. Хорошо понял. Это невозможно, пока команда Oracle не решит улучшить SB. –

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