我正在使用JavaFX构建应用程序,这是我第一次使用它,因此我试图解决谷歌搜索,阅读等问题。该应用程序基本上使用REST API收集一些数据并将其存储在一些CSV文件中。后端没问题,因为我已经做到了,并且可以正常工作。
现在我正在构建界面,因此我想给用户一些选项,例如可视化表上的CSV数据。对于不同的CSV文件,会有几个不同的表。
因此,到目前为止,我的屏幕上有两个选项作为按钮,例如:“显示CSV A”,“显示CSV B”。我想做的是,单击其中之一后,更改“屏幕”(我想场景是它的技术术语),然后,带有CSV信息的表格应出现在屏幕上。 / p>
我正在尝试遵循MVC架构,因此每个屏幕和控制器都有fxml文件,用于修改信息。
我正在尝试从此处(http://java-buddy.blogspot.com/2016/06/read-csv-file-display-in-javafx.html)编写一些代码,以获取起点。这段代码仅解析CSV并将其存储到表中,有几件事我不喜欢它,但是我认为这是一个很好的示例并且很有帮助。如果执行它,它可以在自己的阶段完美运行。问题是试图使其成为应用程序流程中间场景的一部分。
这是我希望表格出现的fxml:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.text.Font?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.control.Button?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<GridPane
fx:controller="frontend.controllers.MetricasController"
xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10"
vgap="10">
<padding>
<Insets top="40" right="40" bottom="40" left="40" />
</padding>
<columnConstraints>
<ColumnConstraints minWidth="100" prefWidth="100"
maxWidth="Infinity" halignment="RIGHT">
</ColumnConstraints>
<ColumnConstraints minWidth="200" prefWidth="200"
maxWidth="Infinity" hgrow="ALWAYS">
</ColumnConstraints>
</columnConstraints>
<TableView fx:id="tableView" GridPane.columnIndex="0" GridPane.rowIndex="0" GridPane.columnSpan="2"
GridPane.rowSpan="1" GridPane.halignment="CENTER"></TableView>
</GridPane>
在名为MetricasController的控制器中,我试图将之前显示的URL的代码与该类集成在一起,该类为空,它仅具有表视图的FXML注释。我正在尝试在initialize方法中编写该代码的一部分(其中的部分填充表格的列)。
所以我一直在尝试,我相信问题可能在这里:
vBox.setSpacing(10);
vBox.getChildren().add(tableView);
root.getChildren().add(vBox);
primaryStage.setScene(new Scene(root, 700, 250));
primaryStage.show();
readCSV();
设置root.get ...之后,在设置主场景时,它不会更新我的场景,因此在屏幕上会出现一个空表。我认为使用该代码“更新” fxml中引用的表也会在屏幕上绘制它,但事实并非如此。
我也不能在fxml上写列,因为我不确定csv文件可以包含多少列。
也许有一种方法可以调用函数来绘制表,而无需在fxml或类似的文件上声明它。
总而言之,我期望得到的是这样的:
谢谢。