Я пытаюсь использовать пользовательский компонент в другом пользовательском компоненте, но он не отображается в Scene Builder.
Пример:
У меня есть проект, который:
Main. java:
package application;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception
{
}
public static void main(String[] args) {
launch(args);
}
}
Component1. java:
package component1;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.layout.Pane;
public class Component1 extends Pane implements Initializable
{
public Component1()
{
super();
try
{
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("Component1.fxml"));
fxmlLoader.setRoot(this);
fxmlLoader.setController(this);
fxmlLoader.load();
}
catch (Exception e)
{
}
}
@Override
public void initialize(URL location, ResourceBundle resources)
{
}
}
Component1.f xml:
<?xml version="1.0" encoding="UTF-8"?>
<?import component2.Component2?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.shape.Line?>
<fx:root prefHeight="200.0" prefWidth="200.0" type="Pane" xmlns="http://javafx.com/javafx/8.0.171"
xmlns:fx="http://javafx.com/fxml/1">
<children>
<Line endX="38.0" endY="66.70709228515625" layoutX="100.0" layoutY="59.0" startX="-47.0"
startY="-17.70709228515625" />
<Line endX="36.29289245605469" endY="-35.0" layoutX="115.0" layoutY="77.0" startX="-69.5"
startY="48.0" />
<Component2 layoutX="33.0" layoutY="84.0" />
</children>
</fx:root>
Component1.f xml в представлении Scene Builder:
Component2. java :
package component2;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.layout.Pane;
public class Component2 extends Pane implements Initializable
{
public Component2()
{
super();
try
{
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("Component2.fxml"));
fxmlLoader.setRoot(this);
fxmlLoader.setController(this);
fxmlLoader.load();
}
catch (Exception e)
{
}
}
@Override
public void initialize(URL location, ResourceBundle resources) {
// TODO Auto-generated method stub
}
}
Component2.f xml:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.shape.Circle?>
<fx:root prefHeight="141.0" prefWidth="106.0" type="Pane" xmlns="http://javafx.com/javafx/8.0.171"
xmlns:fx="http://javafx.com/fxml/1">
<children>
<Circle fill="DODGERBLUE" layoutX="35.0" layoutY="46.0" radius="20.0" stroke="BLACK"
strokeType="INSIDE" />
<Circle fill="DODGERBLUE" layoutX="75.0" layoutY="46.0" radius="20.0" stroke="BLACK"
strokeType="INSIDE" />
<Circle fill="DODGERBLUE" layoutX="55.0" layoutY="81.0" radius="20.0" stroke="BLACK"
strokeType="INSIDE" />
</children>
</fx:root>
Component2.f xml в представлении Scene Builder:
Когда я пытаюсь добавить эти два компонента в конструктор сцен, я не вижу и не использую Component1 из-за использования Component2 в Component1.
При попытке добавить Test_Project02.jar
в Scene Строитель, я вижу:
Я использую этот глупый пример для упрощения проблемы, извините. Так что я могу сделать для использования одного компонента в другом?