Java 向fxml文件添加自定义类

Java 向fxml文件添加自定义类,java,javafx,fxml,scenebuilder,Java,Javafx,Fxml,Scenebuilder,如何将自定义类添加到fxml文件中 我尝试过添加以下内容: package gameName.FinishedClasses; import javafx.scene.control.Button; public class CardButton extends Button { int cardID; public CardButton(String n , int m) { setText(n); cardID = m; } public CardBu

如何将自定义类添加到fxml文件中

我尝试过添加以下内容:

package gameName.FinishedClasses;
import javafx.scene.control.Button;

public class CardButton extends Button
{
  int cardID;

  public CardButton(String n , int m)
  {
    setText(n);
    cardID = m;
  }
  public CardButton(int m)
  {
    cardID = m;
  }
  public int getCardID()
  {
    return cardID;
  }
  public void setCardID(int n)
  {
    cardID =n;
  }
  public void setButtonText(String n)
  {
    setText(n);
  }
}
像这样:

 <CardButton mnemonicParsing="false" text="Button" fx:id="Button1R1C" cardID="0">
                 <padding>
                    <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
                 </padding>
                 <HBox.margin>
                    <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
                 </HBox.margin>
 </CardButton>

它说它无法实例化,我似乎无法找出问题所在。

fxmloader希望您的类和包名也能遵循。具体来说,由于
finishedclass
是大写的,因此FXML导入



被解释为
CardButton
是名为
finishedclass
的类中的一个内部类。正确重命名您的包(即所有小写),它应该可以正常工作。

您的FXML文件中有正确的导入吗?@James\u D欢迎回到我的Shinigan,是的,我有。那么这只是场景生成器的问题吗?应用程序是否运行,或者运行时是否出现与FXML相关的错误?@James\u D如果我将其切换到常规按钮,一切正常。当我决定导入CardButton并替换该按钮时,问题就开始了。那么这只是一个场景生成器问题吗?应用程序是否运行或运行时是否出现与FXML相关的错误?这仍然会导致错误,因为没有无参数的构造函数,其他构造函数的构造函数参数也没有用
@NamedArg
注释,但至少它应该解决问题中发布的问题。。。
Caused by: java.lang.ClassNotFoundException: gameName.FinishedClasses$CardButton
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at javafx.fxml.FXMLLoader.loadTypeForPackage(FXMLLoader.java:2916)
at javafx.fxml.FXMLLoader.loadType(FXMLLoader.java:2905)
at javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2846)