Я пытаюсь создать настраиваемый элемент управления с помощью JavaFX и SceneBuilder 1.1.
У меня есть этот код:
FXML
<?import libreria.javaFX.componentes.componenteTextField.*?>
<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml">
<children>
<CustomComponent fx:id="pastaTxt" layoutX="69.0" layoutY="87.0" prefWidth="200.0" />
</children>
</AnchorPane>
CustomComponent.java
package libreria.javaFX.componentes.componenteTextField;
import javafx.scene.control.TextField;
public class CustomComponent extends TextField {
public CustomComponent() {
super();
// TODO Auto-generated constructor stub
}
public CustomComponent(String arg0) {
super(arg0);
// TODO Auto-generated constructor stub
}
}
Когда я пытаюсь открыть его из SceneBuilder, он говорит мне следующее:
Отсутствующие типы: [CustomComponent]
и это дает мне возможность указать путь к классу (который также не устраняет проблему).
Я попытался поместить класс в оператор импорта, например:
<?import libreria.javaFX.componentes.componenteTextField.CustomComponent?>
Но он дает ClassNotFoundException
.
Любые идеи о том, почему это происходит?
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
Я сделал новый проект только с этими классами:
И код выглядит следующим образом:
CustomControl.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import custom.CustomControl?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<?scenebuilder-classpath-element ../../bin/custom?>
<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml">
<children>
<CustomControl layoutX="51.0" layoutY="100.0" prefWidth="200.0" />
</children>
</AnchorPane>
CustomControl.java
package custom;
import javafx.scene.control.TextField;
public class CustomControl extends TextField {
public CustomControl() {
super();
}
public CustomControl(String arg0) {
super(arg0);
}
}
И у меня все та же проблема. Я указываю путь к классу с диалогом, все кажется мне правильным, но у меня такие же ошибки, что и открытие SceneBuilder.
ПОСЛЕДНЯЯ ИНФОРМАЦИЯ
Пытаясь подойти к решению, мы пробовали этот проект под Eclipse. В результате Eclipse показывает окно ok, но SceneBuilder продолжает эти ошибки. Я надеюсь, что эта подсказка поможет.
Если кто-либо сделал это определение пользовательского контроля в Scene Builder, пожалуйста, сообщите нам и дайте нам пример, это будет очень полезно для нашего проекта.