2016-04-20 4 views
0

Я расширил класс javafx.scene.canvas.Canvas, который будет изменяться. Можно ли написать что-то похожее на это в FXML?Возможно ли создать экземпляр пользовательского класса в коде FXML?

<ResizableCanvas fx:id="..." ></ResizableCanvas > 

Если я делаю это я получаю исключение:

javafx.fxml.LoadException: ResizableCanvas is not a valid type. 
    at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2597) 
    at javafx.fxml.FXMLLoader.createElement(FXMLLoader.java:2774) 
    at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2704) 

Это означает, что я могу использовать только мой класс только в Java-код?

В WPF можно использовать индивидуальный класс в коде XAML. Я ищу что-то подобное.

ответ

2

В FXML-коде вполне возможно использовать «пользовательский» класс. Все, что требуется, это то, что класс находится в пути к классам во время выполнения и может быть разрешен парсером FXML. Последнее означает, что вам нужно полное имя класса, или вам нужен импорт для вашего класса в преамбуле FXML.

Обратите внимание, что FXML не играет хорошо с пакетом по умолчанию, поэтому классы в пакете по умолчанию могут не загружаться. По умолчанию пакеты по умолчанию не рекомендуются.

Так обычно вы бы что-то вроде:

package com.example ; 

public class ResizableCanvas { 

    // ... 
} 

, которые вы можете использовать с

<?import com.example.ResizableCanvas ?> 
<!-- other imports ... --> 

<-- ... --> 
<ResizableCanvas fx:id="..." /> 
Смежные вопросы