Hallo,
ich nutze den Scene Builder 2.0b14. Ich habe eine ganz simple eigene Komponente, die aus einem Label und einem TextField zusammengesetzt ist:
FXML-Datei:
Java-Datei:
Nun habe ich diese eigene Komponente im Scene Builder importiert über "Import JAR/FXML File". Die Komponente taucht dann im linken Bereich unter "Custom" auf.
Mein Problem ist nun: Wenn ich die eigene Komponente im Scene Builder nutze, ersetzt dieser die eigene Komponente durch ihre Einzelteile (GridPane, Label und TextField). Das ist natürlich nicht Sinn der Sache, ich will ja mit meiner eigenen zusammengesetzten Komponente weiterarbeiten.
Wenn ich nun nicht den Scene Builder nutze, sondern direkt die FXML-Datei editiere und dort meine eigene Komponente nutze, kann die FXML-Datei nicht mehr im Scene Builder bearbeitet werden. Die eigene Komponente wird zwar im "Hierarchy"-Bereich links unten angezeigt, allerdings mit einem gelben Warndreieck und dem Hinweis "Selection contains unresolved reference".
Offensichtlich gibt es da ein Classpath-Problem im Scene Builder. Laut diversen Foreneinträgen sollte der Scene Builder beim Öffnen der Komponente einen Dialog öffnen, wo man den Classpath ergänzen kann, das tut er aber leider nicht.
Kann mir da jemand einen möglichen Denkfehler erklären?
Gruß,
AMiGA
ich nutze den Scene Builder 2.0b14. Ich habe eine ganz simple eigene Komponente, die aus einem Label und einem TextField zusammengesetzt ist:
FXML-Datei:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<fx:root prefHeight="25.0" prefWidth="209.0" type="javafx.scene.layout.GridPane" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
<Label id="label" text="Label" GridPane.halignment="RIGHT" />
<TextField id="textField" onKeyPressed="#onKeyPressed" prefHeight="25.0" prefWidth="180.0" GridPane.columnIndex="1" GridPane.halignment="LEFT" />
</children>
</fx:root>
Java-Datei:
Code:
import java.io.IOException;
import javafx.fxml.FXMLLoader;
import javafx.scene.layout.GridPane;
public class MyTextField extends GridPane
{
public MyTextField()
{
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("MyTextField.fxml"));
fxmlLoader.setRoot(this);
fxmlLoader.setController(this);
try
{
fxmlLoader.load();
}
catch (IOException exception)
{
throw new RuntimeException(exception);
}
}
}
Nun habe ich diese eigene Komponente im Scene Builder importiert über "Import JAR/FXML File". Die Komponente taucht dann im linken Bereich unter "Custom" auf.
Mein Problem ist nun: Wenn ich die eigene Komponente im Scene Builder nutze, ersetzt dieser die eigene Komponente durch ihre Einzelteile (GridPane, Label und TextField). Das ist natürlich nicht Sinn der Sache, ich will ja mit meiner eigenen zusammengesetzten Komponente weiterarbeiten.
Wenn ich nun nicht den Scene Builder nutze, sondern direkt die FXML-Datei editiere und dort meine eigene Komponente nutze, kann die FXML-Datei nicht mehr im Scene Builder bearbeitet werden. Die eigene Komponente wird zwar im "Hierarchy"-Bereich links unten angezeigt, allerdings mit einem gelben Warndreieck und dem Hinweis "Selection contains unresolved reference".
Offensichtlich gibt es da ein Classpath-Problem im Scene Builder. Laut diversen Foreneinträgen sollte der Scene Builder beim Öffnen der Komponente einen Dialog öffnen, wo man den Classpath ergänzen kann, das tut er aber leider nicht.
Kann mir da jemand einen möglichen Denkfehler erklären?
Gruß,
AMiGA