xig*_*goa 10 javafx custom-controls javafx-2 fxml scenebuilder
我正在尝试使用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>
Run Code Online (Sandbox Code Playgroud)
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
}
Run Code Online (Sandbox Code Playgroud)
}
当我尝试从SceneBuilder打开它时它会告诉我:
缺少的类型有:[CustomComponent]
它让我有机会指定Classpath(它也不能解决问题).
我尝试将类放在import语句中,如下所示:
<?import libreria.javaFX.componentes.componenteTextField.CustomComponent?>
Run Code Online (Sandbox Code Playgroud)
但它给了一个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>
Run Code Online (Sandbox Code Playgroud)
CustomControl.java
package custom;
import javafx.scene.control.TextField;
public class CustomControl extends TextField {
public CustomControl() {
super();
}
public CustomControl(String arg0) {
super(arg0);
}
}
Run Code Online (Sandbox Code Playgroud)
我仍然有同样的问题.我用对话框指定了类路径,一切似乎都适合我,但是我在打开SceneBuilder时遇到了同样的错误.
最后的信息
试图接近解决方案,我们在Eclipse下尝试了这个项目.结果是Eclipse显示窗口正常,但SceneBuilder继续这些错误.我希望这条线索有所帮助.
如果有人在Scene Builder下完成了这种自定义控件定义,请告诉我们并给我们一个例子,它对我们的项目非常有帮助.
这是由于未指定正确的类路径导致的,该类路径允许运行场景构建器的 java 运行时加载控制类。
如果您正在运行 eclipse 并且您的类具有名称空间custom.MyControl
,则指定 bin 目录而不是自定义目录。在 Maven 项目中,您需要指定 target/classes 目录。
请参阅我自己的项目中的示例: https: //bitbucket.org/atil/estimate/src/22390a2ca034b55f1916e46435b714e5c489b90e/src/main/resources/projmon/gui/workTree.fxml ?at=master
相对文件路径通常由场景生成器创建,因此移动文件会破坏类路径,您需要重新指定它。
归档时间: |
|
查看次数: |
6960 次 |
最近记录: |