我正在尝试将我在 Swing 中构建的应用程序转换为 JavaFx。这包括彻底检查 GUI 设计。应用程序处理数据如下:
从数据库中检索数据。数据库中的每一行都被解析为一个 java bean,每个 bean 被添加到一个 ArrayList。然后将数组列表返回给调用方法,然后解析为 ObservableList 以使其与 JavaFX tableview 兼容。然后我通过向它添加每个 List 元素(它是一个 java bean)来填充该表。
重要的是,构成表格每一行的 Java bean 有 12 个元素。该表在其 9 列中仅向用户显示其中的 9 个。我正在尝试使用行列表元素中其他未显示的值之一,并使用它来确定所显示行的文本颜色是设置为红色还是绿色。我似乎无法管理这个。我在 Stack 和其他论坛上查看了其他几个类似的问题,它们似乎解决了为特定单元格或列而不是行设置单元格文本颜色的问题。他们似乎也依靠可见的显示值来做到这一点。我尝试了几种方法,但它们似乎都不起作用,而且它们看起来很复杂。我正在尝试做的事情必须有更直接的方法,因为这必须是一个相当普遍的要求。
我的表在 FXML 中定义如下:
<TableView fx:id="toDoTable" editable="true" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<columns>
<TableColumn fx:id="todoID" prefWidth="59.0" text="ID" />
<TableColumn id="columnHeader" fx:id="Charity" prefWidth="77.0" text="Charity" />
<TableColumn fx:id="todoFunder" prefWidth="101.0" text="Funder" />
<TableColumn fx:id="todoType" prefWidth="92.0" text="Task Type" />
<TableColumn fx:id="todoInternalDeadline" prefWidth="145.0" text="Internal Deadline" />
<TableColumn fx:id="todoExternalDeadline" prefWidth="145.0" text="External Deadline" />
<TableColumn fx:id="todoHrs" prefWidth="140.0" text="Target Hours" />
<TableColumn fx:id="todoActualHrs" prefWidth="110.0" text="Actual Hours" />
<TableColumn fx:id="todoDescription" prefWidth="110.0" text="Description" />
</columns>
</TableView>
我的另一个想法是使用 lambda 来处理表格行内容,但我再次可以看到我是如何获得实际行的。逐个单元地设置每个元素似乎真的很复杂,所以必须有一种完全不同的方式来思考这个我没有得到的。如果有人可以解释并告诉我如何做到这一点,我将不胜感激。
森林海
相关分类