相关疑难解决方法(0)

在 Jar 中为 Gluon Scene Builder 11.00 创建自定义控件

我想在一个可执行的 jar 文件中创建一个自定义控件,然后在 Gluon Scene Builder 11.00 中使用。我需要知道如何做到这一点。我尝试了几种形式,但在 Scene Builder 中导入 jar 时我的控件没有出现。我正在使用 IntelliJ 社区版 2019.2 和 Gluon Scene Builder 11.00 和 Java 12.0.2。任何人都可以帮助我举一个小例子吗?

马文项目。

custom_control.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.VBox?>

<fx:root maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="51.0" prefWidth="138.0" type="VBox" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <TextField fx:id="textField" />
      <Button mnemonicParsing="false" onAction="#doSomething" prefHeight="25.0" prefWidth="142.0" text="Clck Me" />
   </children>
</fx:root>
Run Code Online (Sandbox Code Playgroud)

自定义控件.java

package customcontrolexample;

import java.io.IOException;

import javafx.beans.property.StringProperty;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;

public class CustomControl extends VBox { …
Run Code Online (Sandbox Code Playgroud)

javafx jar custom-controls scenebuilder gluon

6
推荐指数
1
解决办法
792
查看次数

SceneBuilder 中 JavaFX 自定义组件的使用

我正在使用 Java 20、JavaFX 20 和 Maven 创建一个小型个人项目。我在创建可重用组件并通过主场景的控制器操作它们时遇到问题。

首先,我按照官方文档中列出的步骤进行操作。之后,我转到 SceneBuilder 并在 SceneBuilder 中导入自定义组件的 FXML 文件(单击小引擎图标,其中显示“库”-> JAR/FXML Manager -> 从文件系统添加库/FXML)并将其添加到就像使用任何默认组件一样的场景。然后,我为自定义组件提供了一个 fx:id 并将其添加到场景的控制器类中,以便我可以使用它,但出现以下错误。

Exception in Application start method
java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119)
    at java.base/java.lang.reflect.Method.invoke(Method.java:578)
    at javafx.graphics@20/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
    at javafx.graphics@20/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:578)
    at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1081)
Caused by: java.lang.RuntimeException: Exception in Application start method
    at javafx.graphics@20/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:893)
    at javafx.graphics@20/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
    at java.base/java.lang.Thread.run(Thread.java:1623)
Caused by: javafx.fxml.LoadException: 
/C:/Users/user/Desktop/eclipse-workspace/Project 3/target/classes/app/views/fxml/Menu.fxml:43

    at javafx.fxml@20/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2722)
    at javafx.fxml@20/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2700)
    at javafx.fxml@20/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2563)
    at javafx.fxml@20/javafx.fxml.FXMLLoader.load(FXMLLoader.java:2531)
    at app/app.Main.loadFXML(Main.java:29)
    at app/app.Main.start(Main.java:17)
    at javafx.graphics@20/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:839)
    at javafx.graphics@20/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:483)
    at javafx.graphics@20/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:456)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:400) …
Run Code Online (Sandbox Code Playgroud)

java javafx scenebuilder openjfx

4
推荐指数
1
解决办法
974
查看次数

标签 统计

javafx ×2

scenebuilder ×2

custom-controls ×1

gluon ×1

jar ×1

java ×1

openjfx ×1