情景:
我正在做一个小应用程序来提取大量的Excel工作表数据并对其进行排序然后保存,然后如果需要打印它。我正在使用JavaFX for UI and Apache POI
来读取和写入Excel数据。我已将提取的数据放到ArrayList中,然后我可以执行保存部分。
首先我想把Arraylist元素放到TextArea中然后我可以打印它。但是将每个元素附加到TextArea需要花费很多时间(考虑大约10万个单元格数据)。我想从ArrayList直接打印。
问题: 是否可以从数组列表中获取打印。 可以选择以下任何一种选项吗?
此代码可用于从UI中打印内容,如TextArea。
if (job != null && job.showPrintDialog(ProjectNavigation.scene.getWindow())){
boolean success = job.printPage(node);
if (success) {
job.endJob();
}
}
但问题是我的UI中没有数据。我认为的选项:
任何建议都会有所帮助。谢谢。
PS:
正如Khaled Khnifer在回答中提到的那样,我使用ListView来显示UI中可以打印数据的项目。
答案 0 :(得分:1)
我没有放弃确定您真正需要的内容,但我会回复您要将ArrayList
打印到TextArea
的部分。
如果您正在构建 JavaFX 应用程序,则可以将ListView
绑定到ObservableList
,以更新更新。
public class AppController implements Initializable
{
@FXML private Button myButton;
@FXML private ListView myListView;
// ObservableList is a List
protected ObservableList<String> list = new FXCollections.observableArrayList();
protected int counter = 0;
@Override
public void initialize(URL url, ResourceBundle rb)
{
myListView.setItems(list);
myButton.setOnAction(new EventHandler<ActionEvent>()
{@Override public void handle(ActionEvent event)
{
list.add(counter++);
}});
}
}
在此示例中,点击该按钮会向ObservableList
添加新项目,更改将显示在屏幕上的ListView
上。
您可以添加新项目,删除项目,对项目进行排序,修改项目,更改将在屏幕上更新。
这是从视图中分离数据的好方法,您不需要从UI读取数据,将其写入UI,并且您可以轻松地将数据写入文件,因为它&#39 ; s Serializable
。