问题标签 [javafx-9]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
252 浏览

javafx - ListView.getSelectionModel().selectIndices OOB 错误?

我有一个 ListView 并想在里面以编程方式选择多个索引Platform.runLater()

问题:如果我要选择的索引是连续的(例如{5,6,7}),则选择工作正常。如果存在间隙(例如{5,7,8}),则会引发 OOB 异常。

我相信 Java9 中可能存在错误(我们从 Java8 升级到 9 后开始出现此异常)MultipleSelectionModelBase#set

对于索引{5,6,7},方法调用_nextAdd(from, to)的值为 0 和 3。(包括 0,不包括 3,我假设是指我的数组中的索引 0,1,2 {5,6,7}

对于索引{5,7,8},它_nextAdd(0,2)要求{5}_nextAdd(2,5)索引{7,8}
我相信它应该是_nextAdd(0,1)_nextAdd(1,3)因为我的数组只有 3 个元素,而不是 5 个。

当使用参数 0,5javafx.collections.ListChangeListener#getAddedSubList调用时,最终会抛出异常getList().subList(getFrom(), getTo())

我用谷歌搜索了错误报告,但找不到关于这个问题的任何信息。
我想在提交错误报告之前我会在这里问。

MVCE

启动程序,点击“选择578”按钮。抛出(并捕获)异常: [ fromIndex: 0, toIndex: 5, size: 3 ]

或者

注释掉两个“clearSelection”行。
启动程序,单击“选择 567”,然后单击“选择 578”。
抛出(并捕获)异常: [ fromIndex: 8, toIndex: 9, size: 4 ]

Java版本

StackTrace(启动程序并立即选择“578”按钮):

0 投票
1 回答
1642 浏览

java - 如何在 Eclipse 中为 JavaFX 类启用自动导入?

我当前的 Eclipse 是 Oxygen.2 Release (4.7.2),还有 Java 9.0.1。本质上 Java 9 可以工作,尤其是自动导入工作(对于“普通”类和包),但自动导入(和自动完成)不适用于javafx.*. 如果我手动键入import java并按Ctrl+ Space,则会弹出匹配包的列表,我可以在其中看到javafx.*层次结构。但是当我键入 egimport javafx.stage并按Ctrl+Space时,它会自动添加.*;并且不显示包中的任何类。当我Stage在方法主体的某处键入并按Ctrl+Space时,没有任何建议。但是,当我键入添加导入(如import javafx.stage.Stage)时,代码会编译并运行。

任何关于如何修复自动完成和自动导入功能的线索(正如我所说,它适用于其他类,例如java.time.LocalDateTime或许多其他类)。

0 投票
1 回答
91 浏览

java - JavaFX 阶段坐标在关闭时更新

我遇到了一个非常奇怪的行为,我怀疑这是 JavaFX 9 API 中的一个错误,但我很谨慎,因为我更有可能遗漏了一些东西。

MCVE:

我在 Linux(GNOME 和 FVWM)+ Windows 上对此进行了测试。问题仅在 Linux 上,即在关闭操作中宽度/高度值发生了变化。示例输出:

我的猜测是窗口装饰是值的一部分,但仅在第二个块中。在应用程序运行期间,它不包括在内,并且会报告最初设置的值。在 GNOME 上,我得到了稍微不同的变化(w:0,h:37),因为装饰也不同。

我在 Java 8 上对其进行了测试,完全没有区别。Windows 似乎也按预期工作,两个部分的输出相同。我搜索了 JDK 错误,但没有发现这个报告。我希望有人可以确认这是否是预期的行为,或者确实是一种回归。

它给我带来的问题是,除了窗口大小/位置之外,我无法实现强大的首选项,因为在 Linux 上,窗口会爬走。(场景宽度/高度可以作为一种解决方法,但它仍然值得怀疑。)

0 投票
0 回答
59 浏览

javafx - JavaFX 9 - 根据单击的表格单元在行下方插入流窗格,第 2 部分

我正在尝试实现一个包含 2 列的 TableView。每个表格单元格包含不同玩家的数据。单击玩家后,包含与单击的玩家对应的数据的自定义 FlowPane 将显示在玩家所在的行下方。使用 James_D 的代码回答了我之前的问题:

JavaFx - tableView 中的字符串和 FlowPane(行?)?

我已经设法使用自定义 TableRowFactory(skin) 使 FlowPane 出现在所需的位置:

前:

点击之前

单击一个玩家后(bg player 0 或 1,没关系 - 选择了整行):

点击后

但是,虽然我确实需要在所选行下方直观地显示 FlowPane,但 FlowPane 取决于单击的实际单个单元格 - 而不是单击的行。具体来说,如果我单击一行中的一个单元格,导致 FlowPane 出现,然后单击同一行中的另一个单元格,FlowPane 应该更改其数据以反映最新的点击。如果再次单击同一玩家,FlowPane 应该会消失。此外,选择一个单元格不应该选择整行,并且 FlowPane 不应该因为选择而被着色(蓝色或任何其他颜色)......但是玩家的名字应该是!

我很难实现这一点。我想我需要:

这允许单独的单元格选择。但是启用它会禁用 TableRowSkin 的侦听器,从而使整个代码变得毫无意义。我尝试了一种解决方法:下面的代码可以通过监听 selectedCells 列表的更改来获取所需的行/列 TablePosition。太好了 - 但我不知道如何进行。如果我无法访问 TableCell 的流程窗格,甚至无法访问 Cell 本身,那么行/列位置的意义何在?我似乎唯一能够访问的是单元格包含的(属性)字符串。这很有用,但我怀疑我是否应该执行 getItems() 然后遍历它们以查看实际选择了哪个底层 Player,然后以某种方式更新 flowPane。

在伪代码中,我想做的就是:

谁能指出我正确的方向?请参阅(在顶部)指向 James_D 代码的链接。如果你能帮我让它在那里工作,那就太棒了:)

0 投票
1 回答
1066 浏览

java - 如何在 Eclipse 中获取 Javafx 9?

我在 Eclipse 中创建了一个 Java 9 项目,生成了一个module-info.java并添加了一些测试依赖项,一切正常。

但如果我添加requires javafx.base,它会说“javafx.base 无法解析为模块”。JavaFX 不会出现在类路径中。

我尝试使用各种Java版本在eclipse中使用JavaFX项目模板创建JavaFX项目,同样的问题。它添加了一个名为“JavaFX SDK”的库,但它只包含在 jar 文件(“ org.eclipse.fx.ide.css.jfx8_3.0.0.201705220750.jar”)中,只有清单,没有类。

我已经尝试使用 Oxygen.3 并安装了 e(fx)plugin 以及新的 Eclipse Photon 安装。两者都不起作用。解决此问题的唯一方法是切换回 openjdk-8-jdk 并使用 JavaFX 8。

如何让 JavaFX 9 工作?

0 投票
0 回答
505 浏览

java - 导入 PropertyValueFactory 无法解析

正如标题所说:不知何故,java 找不到 PropertyValueFactory 类,尽管它在系统库中(如链接中的图片所示),我不知道为什么。该包中的其他类正在工作,只是这个特定的类没有......我正在使用 JDK 9.0.4 和 Eclipse 4.7.3

这是module-info.class:

问题画面

0 投票
0 回答
196 浏览

java - Javafx TextField 总是抛出“空字符串”错误

下面的代码应该允许用户输入他们要添加到列表中的新产品的详细信息(选择框除外)。几乎所有代码都有效,除了方法 handlePrice()。每当用户尝试在 priceText TextField 中输入时,都会抛出错误“Empty String”,并且根本不允许用户输入任何字符。所有变量都在代码中初始化,PartList 是一个初始化的 ObservableList。

0 投票
1 回答
271 浏览

javafx - javafx PieChart 标签中的 Java9 错误

使用上面的代码,它首先显示带有按钮“饼”的阶段。单击该按钮会显示一个带有“返回”按钮的饼图。后退按钮用于返回初始屏幕。

这段代码的问题是,在第二次显示饼图之后,饼图的标签突然变得挤满了。

可以看到

我可以看到有问题,但我无法真正看到原因。此外,这个问题只出现在 java9 中;它在java8中运行良好。

请问有人能帮我找出原因吗?

在此处输入图像描述

0 投票
0 回答
1176 浏览

javafx - JavaFX FXML setUserData DAO

我有一个需要加载 FXML 的应用程序。FXML 在应用程序外部(不是由开发人员制作的)。

该应用程序有一个服务器连接来获取遥测数据。

我需要根据这些遥测数据更新节点。在这方面,我制作了一个 NodeData 用户数据对象,FXML 的设计者可以将其添加到 FXML 中的每个节点

FXML userData 显示内联以进行演示


Java 用户数据对象

我计划让 NodeData 发送查询并接收响应。

收到响应后,我想更新节点。我不太确定我会怎么做。返回到我可以收听的节点的用户数据上没有 Observable。

一种解决方案:
也许我可以让控制器完成这项工作。在 @FXML 初始化中,我可以遍历我有权访问的 rootPane,找到所有节点,检索其 NodeData,发送查询。当收到更新节点。然而,这似乎有点混乱。


我想对这个设计策略发表意见,如果这里有更好的解决方案?

0 投票
1 回答
1017 浏览

java - 如何在 Intellij IDEA 中使用 openjfx-11 存档?

我下载了档案 openjfx-11-ea+13_windows-x64_bin-sdk 和 OpenJDK。然后我创建了一个 JavaFX 应用程序项目并在 Intellij IDEA (1.8.3) 中编写了一个演示。

为了编译项目,在 IDEA “Module Setting”->“Dependencies”中,我将“lib”目录设置为 jars,并将“bin”目录设置为“Native Library Locations”。

但是当我运行应用程序时,控制台显示“javafx 运行时组件丢失”。

我不知道如何将单独的 openjfx 与 openjdk 一起使用。

谢谢你的帮助