自定义控件 – JavaFX自定义控件(TextField)不起作用

我试图用 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打开它,它告诉我:

Missing types are: [CustomComponent]

并且它让我有机会指定Classpath(也不解决问题).

我试着把类放在import语句上,就像这样:

<?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显示窗口可以,但SceneBuilder继续这些错误.我希望这个线索有帮助.

如果有人在Scene Builder下完成了这种定制控件定义,请告诉我们,给我们一个例子,这对我们的项目来说是非常有帮助的.

解决方法

这是由于不指定正确的类路径,这允许运行Java运行场景构建器加载控件类.

如果你正在运行eclipse并且你的类有命名空间custom.MyControl然后指定bin目录而不是自定义目录.在maven项目中,您需要指定目标/类目录.

在我自己的项目中看到一个例子:https://bitbucket.org/atill/estimate/src/22390a2ca034b55f1916e46435b714e5c489b90e/src/main/resources/projmon/gui/workTree.fxml?at=master

相对文件路径通常由场景构建器创建,因此移动的文件将破坏类路径,您将需要重新定义它.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


应用场景 C端用户提交工单、工单创建完成之后、会发布一条工单创建完成的消息事件(异步消息)、MQ消费者收到消息之后、会通知各处理器处理该消息、各处理器处理完后都会发布一条将该工单写入搜索引擎的消息、最终该工单出现在搜索引擎、被工单处理人检索和处理。 事故异常体现 1、异常体现 从工单的流转记录发现、
线程类,设置有一个公共资源 package cn.org.chris.concurrent; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * @Descrip
Java中的数字(带有0前缀和字符串)
在Java 9中使用JLink的目的是什么?
Java Stream API Filter(过滤器)
在Java中找到正数和负数数组元素的数量
Java 9中JShell中的不同启动脚本是什么?
使用Java的位填充错误检测技术
java中string是什么
如何使用Java中的JSON-lib API将Map转换为JSON对象?
Java菜单驱动程序以检查数字类型
使用Junit的Maven项目 - 检查银行账号
JAVA编程基础
在Java中使用throw、catch和instanceof来处理异常
在Java中,将数组分割为基于给定查询的子数组后,找到子数组的最大子数组和
如何在Java中从给定的字符串中删除HTML标签?
在PHP中,IntlChar getBlockCode()函数的翻译如下:
如何在Android中实现按下返回键再次退出的功能?
如何使用Java中的流式API解析JSON字符串?
Java中的模式类