fxml 相关问题

一种可编写脚本的基于XML的语言,它提供了与代码的应用程序逻辑分开构建JavaFX用户界面的结构。

JavaFX textField getter 不起作用,在另一个类中返回值为 null

我有2节课 第一类是控制器 公共类控制器{ @FXML 私有文本字段 myText; 公共 TextField getMyText() { 返回我的文本; } } 和二等舱 酒吧...

回答 1 投票 0

有没有办法检测多个节点上的同一事件?

我正在研究一种元素周期表,有一个事件最终,当您将鼠标悬停时,会在所述元素上放大一点并显示更多信息,事实是它确实......

回答 1 投票 0

如何使 MediaView 保持在我的 JavaFX MediaPlayer 应用程序中窗格的中心?

我正在使用 JavaFX (IntelliJ) 创建一个媒体播放器。我将 MediaView 放在 BorderPane 中心的 Pane(mediaPane) 内。我希望 mediaView 始终位于窗格的中心,...

回答 1 投票 0

如何比较fxml文件?

我目前正在使用 SceneBuilder 创建和修改我的 fxml 文件(以及 IDE NetBeans 8.2)。 我想“并排”比较两个 fxml,但场景生成器似乎没有...

回答 1 投票 0

MaterialFx 的“浮动文本”属性对我来说无法正常工作 - 渲染时浮动文本属性保持隐藏状态

例如,我在我的 fxml 文件中使用它: 例如,我在我的 fxml 文件中使用它: <MFXTextField fx:id="username" floatMode="BORDER" floatingText="username" layoutX="10.0" layoutY="10.0" prefHeight="24.0" prefWidth="361.0"> <VBox.margin> <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" /> </VBox.margin> </MFXTextField> 这在 scenebuilder 中渲染得很好,但是当我在 intellij 中运行相同的 fxml 时,同样的加载会很奇怪 在场景构建器中预览相同的 fxml: 与我使用场景构建器预览得到的渲染效果相同 明白了。缺少设置透明背景 - MFXThemeManager.addOn(scene, Themes.DEFAULT, Themes.LEGACY); scene.setFill(Color.TRANSPARENT);

回答 1 投票 0

如何修复进度条和滑块以在 JavaFX MediaPlayer 中的任何所需位置进行搜索

我正在使用JavaFX(IntelliJ)创建一个媒体播放器。现在我使用滑块作为进度条,以便我可以在任何所需的位置进行搜索。现在,每当我运行应用程序并启动播放器时,...

回答 1 投票 0

如何在 FXML (JavaFX) 中制作响应式 ImageView

我有一个显示 3 个图像的场景,我希望每个图像占据场景宽度的三分之一。 从现在开始,我制作了 3 个窗格,每个窗格的 30%,它有效。 但在那些窗格中,我无法制作我的图像...

回答 2 投票 0

JavaFX - 从禁用转换为启用按钮

父类的控制器 该类包含 3 个按钮“btnSocieta”、“btnUnitaLocali”、“btnReparti”。 第一个是默认启用的,其他两个是禁用的。 在 stackPane 中我显示起始页

回答 1 投票 0

使用 CSS -fx-shape 绘制区域。怎么可能?

我正在寻找一种在区域中绘制形状的方法(JavaFX8) 我见过一些设置区域样式的示例,如下所示: -fx-形状:“M 3.0313 0 L 0 74 L 7.9688 74 L 4.9375 0 L 3.0313 0 Z”;...

回答 2 投票 0

无法加载 Glass 工厂类:在 Linux 和某些 Mac 操作系统机器上继续出现此错误,但在其他情况下工作正常

我在 Intellij 上制作了一个 Jar 文件,我能够使其在 Windows 和某些 MacOS 中运行,但在其他情况下则不然(所以某些 MacOS 和 Linux 无法运行) 我做了什么 : 将 javafx 版本从 17 更改为...

回答 1 投票 0

我使用 SceneBuilder 对 FXML 进行建模后,JavaFX 应用程序无法启动

刚刚在 SceneBuilder 上创建了一个基本 UI 并将 FXML 保存到 Java 中,但现在每当我启动应用程序 [HelloApplication] 时,都会出现有关未设置 fxml 位置的错误 难道是……

回答 1 投票 0

JavaFx中如何让Table的水平、垂直角的滚轮背景颜色透明?

这是框架的图像。我突出显示了我想要透明的角。 我面临着使桌子的角颜色透明的问题。我不明白为什么不是

回答 1 投票 0

修改通过 FXML 文件加载的 JavaFX 场景?

我正在尝试在我正在运行的应用程序的 Java 代码中修改通过 FXML 文件加载的 JavaFX 场景。 我有以下使用 SceneBuilder 创建的测试 FXML 文件: 我正在尝试修改我正在运行的应用程序的 Java 代码中通过 FXML 文件加载的 JavaFX 场景。 我有以下使用 SceneBuilder 创建的测试 FXML 文件: <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.Tab?> <?import javafx.scene.control.TabPane?> <?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.layout.BorderPane?> <?import javafx.scene.shape.Line?> <BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="720.0" prefWidth="1280.0" xmlns="" xmlns:fx=""> <top> <TabPane prefHeight="100.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" BorderPane.alignment="CENTER"> <tabs> <Tab text="Untitled Tab 1"> <content> <AnchorPane prefHeight="100.0" prefWidth="200.0" /> </content> </Tab> <Tab text="Untitled Tab 2"> <content> <AnchorPane prefHeight="100.0" prefWidth="200.0" /> </content> </Tab> </tabs> </TabPane> </top> <center> </center> </BorderPane> 这只是一个 BorderPane,其中 Top 部分有两个空选项卡,还有一个空的 Center 部分。我希望能够在Center部分绘制一些形状。我使用 以下示例代码 在 Canvas 窗口中绘制一些随机形状,并确保示例代码本身可以工作: 然后,我想将完全相同的绘制的 Canvas(具有完全相同的形状)插入到上面显示的 FXML 文件中声明的 Center 的 BorderPane 部分中。 但是,我对如何正确引用 FXML 加载器加载的场景的各个子项有点困惑。如果我在我的 start 函数中尝试以下代码: public void start(Stage stage) throws IOException { stage.setTitle("Drawing Operations Test"); Scene scene = new Scene(loadFXML("primary"), 1280, 720); Canvas canvas = new Canvas(300, 250); GraphicsContext gc = canvas.getGraphicsContext2D(); drawShapes(gc); scene.getRoot().getChildrenUnmodifiable().get(0).getChildren().add(canvas); stage.setScene(scene); stage.show(); } 其中drawShapes是在Canvas上绘制形状的函数,线: scene.getRoot().getChildrenUnmodifiable().get(0).getChildren().add(canvas); 被列为错误,因为在 getChildren 类中找不到类函数 Node。 现在,我对该错误原因的最初假设是因为我应该将 Node 对象类型转换到我想要添加 canvas 的相应类中,在我的例子中是 BorderPane 类。然而,我想澄清 getChildren 类函数将在这里返回给我什么。 getChildren 是否返回 BorderPane 对象,因为它是 FXML 文件中声明的第一个对象?或者该元素是否是其他元素的父元素?将我的 Canvas 添加到我的 Center 的 BorderPane 部分的正确方法是什么? 感谢您阅读我的帖子,感谢任何指导。 scene.getRoot() 将返回场景的根,您可以通过调用 Scene 构造函数来设置该根: Scene scene = new Scene(loadFXML("primary"), 1280, 720); 换句话说,scene.getRoot()是从load.FXML(...)返回的对象。您没有向我们展示该方法定义,因此我们无法确定,但可以合理地假设它返回调用 FXMLLoader.load(...) 的结果,这将是 BorderPane(根元素,在 XML 意义上, FXML 文件的一部分)。 因此,您可以将 scene.getRoot() 的结果转换为 BorderPane,然后调用 setCenter(...)(或者,显然更好,首先保留对 loadFXML(...) 结果的引用)。 代码 scene.getRoot().getChildrenUnmodifiable() 将返回 BorderPane 的子节点列表,即仅包含 TabPane 的列表,所以 scene.getRoot().getChildrenUnmodifiable().get(0) 是对 TabPane 的引用,并且 scene.getRoot().getChildrenUnmodifiable().get(0).getChildren() (添加了适当的转换)是 TabPane 的子节点列表。该列表的内容基本上是 TabPane 及其皮肤的实现细节。 但这都不是 API 设计者想要使用的方式。相反,为 FXML 定义一个控制器类,并将 BorderPane 注入其中: <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.Tab?> <?import javafx.scene.control.TabPane?> <?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.layout.BorderPane?> <?import javafx.scene.shape.Line?> <BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="720.0" prefWidth="1280.0" xmlns="" xmlns:fx="" fx:controller="my.package.MyController" fx:id="borderPane" > <!-- ... --> </BorderPane> 然后定义控制器,并在 initialize() 方法中修改边框窗格(如果您想立即添加画布),或在事件处理程序中(如果您想修改场景图以响应用户操作): package my.package; // imports ... public class MyController { @FXML private BorderPane borderPane; @FXML private void initialize() { Canvas canvas = new Canvas(300, 250); GraphicsContext gc = canvas.getGraphicsContext2D(); drawShapes(gc); borderPane.setCenter(canvas); } private void drawShapes(GraphicsContext gc) { // ... } }

回答 1 投票 0

Intelij Idea - 从嵌套目录加载 fxml 资源

我在从资源视图目录加载 fxml 文件时遇到问题。 我可以在没有嵌套目录的情况下正常加载它,但想以这种方式解决它以获得更多的结构组织。

回答 1 投票 0

JavaFx 在 FXML 中包含自定义组件

我尝试找到有关如何将自定义 javafx 对象包含到 fxml 文件中的解决方案。 例如 打包 myExtendedObjects; 导入javafx.scene.control.Label; 公共类 MyLabel 扩展了 Label int...

回答 1 投票 0

如何将标签数组或其他类型加载到fxml场景中?

我正在编写带有完整标签数组的简单 VBox,但我不明白如何添加该数组。 列表.fxml 我正在编写带有完整标签数组的简单 VBox,但我不明白如何添加该数组。 列表.fxml <VBox xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" fx:controller="list.ListController"> <List> <fx:reference source="list"/> </List> </VBox> ListController.java //It's a test code... package list; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javafx.scene.control.Label; public class ListController { public List<Label> list = new ArrayList<Label>(Arrays.asList(new Label("Test"), new Label("Test2"))); } 编译器错误: Exception in Application start method java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389) at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source) Caused by: java.lang.RuntimeException: Exception in Application start method at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$1(LauncherImpl.java:182) at java.lang.Thread.run(Unknown Source) Caused by: javafx.fxml.LoadException: /C:/Users/giglo/eclipse-workspace/YourList/bin/List.fxml:10 at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601) at javafx.fxml.FXMLLoader.access$700(FXMLLoader.java:103) at javafx.fxml.FXMLLoader$InstanceDeclarationElement.constructValue(FXMLLoader.java:1011) at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:746) at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2707) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2527) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441) at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409) at list.Input.start(Input.java:25) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$8(LauncherImpl.java:863) at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$7(PlatformImpl.java:326) at com.sun.javafx.application.PlatformImpl.lambda$null$5(PlatformImpl.java:295) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$6(PlatformImpl.java:294) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$4(WinApplication.java:185) ... 1 more Caused by: java.lang.InstantiationException: java.util.List at java.lang.Class.newInstance(Unknown Source) at sun.reflect.misc.ReflectUtil.newInstance(Unknown Source) at javafx.fxml.FXMLLoader$InstanceDeclarationElement.constructValue(FXMLLoader.java:1009) ... 15 more Caused by: java.lang.NoSuchMethodException: java.util.List.<init>() at java.lang.Class.getConstructor0(Unknown Source) ... 18 more Exception running application list.Input 该代码是更多版本中最好的,因为我花了很多时间搜索 fx:... 和变量类。 但他的不起作用。 我知道 javafx 本身不会弄清楚如何处理我的列表,但我不知道如何告诉它如何处理我的列表。 该错误是由于您尝试直接引用 FXML 文件中的 List 导致的。 但是,您无法直接引用 FXML 中List这样的泛型类型,并且 JavaFX FXML 不支持通过 FXML 直接实例化非 JavaFX 类。 要实现您想要的效果,您可以使用 fx:id 属性来引用 VBox 等容器,然后以编程方式将 Label 元素添加到控制器中,如下所示: 列表.fxml: <VBox xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" fx:controller="list.ListController"> <VBox fx:id="labelContainer"> <!-- You can leave this section empty --> </VBox> </VBox> ListController.java: package list; import java.net.URL; import java.util.ResourceBundle; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Label; import javafx.scene.layout.VBox; public class ListController implements Initializable { @FXML private VBox labelContainer; @Override public void initialize(URL url, ResourceBundle rb) { // Create Label instances Label label1 = new Label("Test"); Label label2 = new Label("Test2"); // Add labels to the VBox container labelContainer.getChildren().addAll(label1, label2); } }

回答 1 投票 0

如何使JavaFx中的表格视图响应式?

我一直在尝试制作一个简单的 UI,其中顶部部分有一个菜单栏,BorderLayout 的中心部分有 4 个表格视图。我想要的是这 4 个表格应该显示为 2by2

回答 1 投票 0

JavaFx 如何创建仅显示最近数据的图表

我有一个带有动态添加数据的图表。但只想显示例如最后 50 个条目。 我的 x 值每次都会增加 1。 我如何为此修改我的图表或我的系列? 呃...

回答 1 投票 0

JavaFX 20 在同一屏幕上打开新窗口 [已解决]

我有一个小型 javafx 20 应用程序,它显示一个包含列表的主窗口(带 CSS 的 FXML)。双击任何行将打开一个新窗口来编辑该行。 问题是,如果主要...

回答 1 投票 0

Fxweaver 无法加载 FXML 文件

**嗨,我只是想加载我的项目的登录页面,但每次都会出现此错误: ** “由以下原因引起:net.rgielen.fxweaver.core.FxLoadException:无法加载 FXML 文件 file:/C:/Users/...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.