【问题标题】:Adding custom classes to fxml files将自定义类添加到 fxml 文件
【发布时间】:2017-03-05 07:18:59
【问题描述】:

如何将自定义类添加到 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>

堆栈跟踪:

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)

它说它无法实例化,我似乎无法弄清楚问题所在。

【问题讨论】:

  • 您的 FXML 文件中是否有正确的导入?
  • @James_D 欢迎回到我的 shinigans,是的,我愿意。
  • 这只是场景构建器的问题吗?应用程序是否运行或在运行时是否出现与 FXML 相关的错误?
  • @James_D 如果我将其切换到常规按钮,一切正常。当我决定导入 CardButton 并替换 Button 时,问题就开始了。
  • 这只是场景构建器的问题吗?应用程序是否运行或在运行时是否出现与 FXML 相关的错误?

标签: java javafx fxml scenebuilder


【解决方案1】:

FXMLLoader 期望您的类和包名称遵循standard naming conventions。具体来说,由于FinishedClasses 大写,FXML 导入

<?import gameName.FinishedClasses.CardButton ?>

被解释为 CardButton 是名为 FinishedClasses 的类中的内部类。正确重命名你的包(即全部小写),它应该可以正常工作。

【讨论】:

  • 这应该还是会报错,因为没有没有参数的构造函数,而且其他构造函数的构造函数参数都没有用@NamedArg注解,但至少应该可以解决发布在问题...
猜你喜欢
  • 1970-01-01
  • 2017-12-03
  • 2018-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多