JavaFx在FXML中包含自定义组件

JavaFx在FXML中包含自定义组件,java,inheritance,javafx,fxml,Java,Inheritance,Javafx,Fxml,我试图找到一个关于如何将自定义javafx对象包含到fxml文件的解决方案 比如说 package myExtendedObjects; import javafx.scene.control.Label; public class MyLabel extends Label interface connected{ MyLabel(){ super(); } //Custom Code ... } 进入fxml <?import myExten

我试图找到一个关于如何将自定义javafx对象包含到fxml文件的解决方案

比如说

package myExtendedObjects;

import javafx.scene.control.Label;

public class MyLabel extends Label interface connected{

    MyLabel(){
        super();
    }
  //Custom Code ...
}
进入fxml

<?import myExtendedObjects.myLabel?>
<myLabel text="Name" />
编辑2: 更改名称后,我能够导入自定义对象而没有错误 但是当我尝试插入

<MyLabel fx:id="myLabel"/>
Java应用程序启动方法中的异常有多种类型,包括类名应大写,包名应全部小写,字段和方法名应以小写开头

虽然Java编译器和运行时仅将这些视为约定,并将确定任何实体是否是上下文中的类或属性,基本上不考虑名称,但在FXML和
FXMLLoader
中情况并非如此

各国:

如果标记以大写字母开头,则元素的标记被视为实例声明

标记名以小写字母开头的元素表示对象属性

因此,如果您的类未能遵循通常的命名约定,它们可能无法在FXML中正常工作。确保类和接口名称大写,属性名称不大写,包名称都是小写,并确保它们在Java代码和FXML中使用一致

此外,
fxmloader
将通过调用(通常)无参数构造函数来创建类的实例。为了使其工作,构造函数必须是公共的:

package myExtendedObjects;

import javafx.scene.control.Label;

public class MyLabel extends Label interface connected{

    public MyLabel(){
        super();
    }
  //Custom Code ...
}
Java有各种各样的功能,包括类名应大写,包名应全部小写,字段和方法名应以小写开头

虽然Java编译器和运行时仅将这些视为约定,并将确定任何实体是否是上下文中的类或属性,基本上不考虑名称,但在FXML和
FXMLLoader
中情况并非如此

各国:

如果标记以大写字母开头,则元素的标记被视为实例声明

标记名以小写字母开头的元素表示对象属性

因此,如果您的类未能遵循通常的命名约定,它们可能无法在FXML中正常工作。确保类和接口名称大写,属性名称不大写,包名称都是小写,并确保它们在Java代码和FXML中使用一致

此外,
fxmloader
将通过调用(通常)无参数构造函数来创建类的实例。为了使其工作,构造函数必须是公共的:

package myExtendedObjects;

import javafx.scene.control.Label;

public class MyLabel extends Label interface connected{

    public MyLabel(){
        super();
    }
  //Custom Code ...
}

您好,我想您没有遵循java的命名约定,您有小写的类和接口名称,但这说明了主要问题。你有一个类
myLabel
,但是它的构造函数是
myConnectedLabel()
,所以如果你使用任何IDE,你肯定会得到一个编译错误。ah jear未能复制正确的部分,但在
中。fxml
文件仍然是错误的标签,我认为对我来说:
有效。我认为你在加载时有问题,请在加载的地方插入代码部分。
。fxml
大小写实际上可能是问题所在。来自FXML:“如果标记以大写字母开头,则元素的标记被视为实例声明”;以及更高版本:“标记名以小写字母开头的元素表示对象属性。”。因此,未能遵循正确的命名约定可能会混淆
fxmloader
。但是,除非在问题中包含完整的堆栈跟踪,否则很难判断出问题所在。嗨,我想你没有遵循java的命名约定,你有小写的类和接口名称,但这说明了主要问题。你有一个类
myLabel
,但是它的构造函数是
myConnectedLabel()
,所以如果你使用任何IDE,你肯定会得到一个编译错误。ah jear未能复制正确的部分,但在
中。fxml
文件仍然是错误的标签,我认为对我来说:
有效。我认为你在加载时有问题,请在加载的地方插入代码部分。
。fxml
大小写实际上可能是问题所在。来自FXML:“如果标记以大写字母开头,则元素的标记被视为实例声明”;以及更高版本:“标记名以小写字母开头的元素表示对象属性。”。因此,未能遵循正确的命名约定可能会混淆
fxmloader
。但是,除非你在问题中包含完整的堆栈跟踪,否则根本不可能判断出问题出在哪里2@Olgidos请参阅更新答案。这个错误信息是不言自明的。也许我需要休息一下,我没有集中注意力,但谢谢=)你能看一下编辑吗2@Olgidos请参阅更新答案。这个错误信息是不言自明的。也许我需要休息一下,我很放松,但是谢谢=)
package myExtendedObjects;

import javafx.scene.control.Label;

public class MyLabel extends Label interface connected{

    public MyLabel(){
        super();
    }
  //Custom Code ...
}