选择包含未解决的参考
我有一个从TextField扩展的类。我将控件手动插入到fxml文件中,并包含一个导入语句。现在我看不到Scene Builder 2.0版中的控件。相反,我收到一条消息,指出:“选择包含未解决的参考”。我将如何去解决它们?选择包含未解决的参考
编辑:
我想我是不是说明在我的问题就清楚了。在我看来,我应该能够设置指向我的自定义控件类的类路径。一些网站如this一个告诉我选择一个名为的菜单条目解决未知类型。由于这个菜单项在我的Scene Builder版本中不存在我认为必须存在一些解决这些问题的新机制。这就是为什么我在我的问题上如此含糊的原因。事后看来,这可能不是一个好主意。
FocusedTextField.java:
package de.foo.bar.gui;
import javafx.beans.property.StringProperty;
import javafx.scene.control.TextField;
public class FocusedTextField extends TextField{
public void setStringProperty(StringProperty stringProperty){
focusedProperty().addListener((observable, oldValue, newValue) ->
stringProperty.setValue(getText()));
}
}
摘自FooDialog.fxml:
<?xml version="1.0" encoding="UTF-8"?>
<?import de.foo.bar.gui.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane>
<children>
<FocusedTextField fx:id="fooField" />
<FocusedTextField fx:id="barField" />
</children>
</AnchorPane>
你缺少类路径中FXML分配的场景生成器回暖Class文件。如果您使用的是Eclipse,那么类路径将指向您的bin
目录。
FooDialog.fxml:
<?xml version="1.0" encoding="UTF-8"?>
<?import custom.*?>
<?import custom.FocusedTextField?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?scenebuilder-classpath-element ../../bin?>
<AnchorPane xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2">
<children>
<FocusedTextField fx:id="fooField" />
<FocusedTextField fx:id="barField" />
</children>
</AnchorPane>
FocusedTextField.java
package custom;
import javafx.beans.property.StringProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.control.TextField;
public class FocusedTextField extends TextField {
public void setStringProperty(final StringProperty stringProperty) {
focusedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable,
Boolean oldValue, Boolean newValue) {
stringProperty
.setValue(getText());
}
});
}
}
在你的情况,你可以使用你想要的包。请记住,classpath是一个相对路径,所以如果你的fxml在src/de/foo/bar/gui/FooDialog.fxml中。然后类路径将是
<?scenebuilder-classpath-element ../../../../../bin?>
我正在使用IntelliJ,因此我正在使用''但这不能解决它。我也尝试添加或删除'../',但没有任何工作。 – Nessuno 2014-12-04 13:02:18
我有同样的问题,当我复制标题部分xml到另一个fxml布局文件。 但是当我将其与导入语句一起复制时,它已被清除。 现在,场景构建器在布局文件被其他源编辑后显示该布局文件。
你在使用哪个场景制作器?您是否在Scene Builder中导入了包含新控件的Jar? – ItachiUchiha 2014-12-02 10:01:53
我使用的是场景生成器2.0,并且我在项目中定义了自定义控件,我想在其中使用它,因此不需要导入任何外部jar。 – Nessuno 2014-12-02 15:27:28
即使它位于项目内部,Scene Builder也是一个外部工具,需要了解您已定义的新Custom控件。 – ItachiUchiha 2014-12-02 15:48:23