可以保存到文件的JTable

时间:2009-11-24 21:21:26

标签: java jtable

有没有人知道可以保存到文件的基于JTable的Swing组件或代码示例?即:提供一个菜单项或按钮,单击该按钮会提示用户输入文件位置并将表的内容保存到文件(CSV,XLS,TXT或其他任何内容)。

简单的部分是循环遍历行并保存到文件中。但是桌面本身也需要一个UI组件,允许用户启动保存。

4 个答案:

答案 0 :(得分:6)

自己写。您所要做的就是使用table.getModel()。getValueAt(...)方法并循环遍历行和列,然后将数据写入文件。

答案 1 :(得分:2)

我使用以下方法实现了这一点:

  • 创建Action实施:DelimitedExportAction。我通常会将此操作添加到JToolBarJMenuBarJPopupMenu
  • 公开方法void registerTable(JTable tbl)。在内部,此方法会向FocusListener添加JTable。当给定的JTable获得焦点时,设置tableToExport实例变量并启用操作。
  • 调用actionPerformed(ActionEvent)方法时,如果tableToExport != null调用导出逻辑。
  • 而不是遍历TableModel我建议迭代JTable,而对于在基础getValueAt(int, int)上调用TableModel的每一行,记住要在查看和模型行/列索引。这对最终用户来说更直观,因为这意味着在导出期间会保留应用于JTable的任何排序和过滤。 (在我的实现中,我实际上为用户提供了导出所有数据或可见数据的选择。)
  • 定义DelimitedExportFormatter,其作用是将getValueAt(int, int)返回的每个对象转换为String。与向JTable提供渲染器时类似,此类应允许您为给定的Class或特定列提供格式,其中列特定格式优先。应用于所有其他值的默认格式应为:value == null ? "" : value.toString()
  • 我允许以不同的模式配置操作(这也控制了操作的图标):
    • 导出到文件:启动文件选择器对话框,允许用户指定保存目标。
    • 导出到Excel:将导出的数据另存为临时文件,并在Excel中打开。
    • 可配置导出:启动一个对话框,用户可以指定:行分隔符,字段分隔符,要导出的列,要导出的行(全部,可见,选定),保存目标(Excel /文件)。

我担心我无法提供代码,因为它是专有的,但希望这会让你走上正轨。祝你好运!

答案 2 :(得分:1)

我不知道任何满足这种确切需求的类似JTable的Swing组件。

但是,您希望将按钮放在桌子上的哪个位置?在我看来,通过将JTable添加到JScrollPane并将“save”按钮放在JScrollPane上或将JScrollPane添加到JPanel并将“save”按钮放在JPanel上,可以更好地满足您的需求。我没有看到JTable本身有一个按钮背后的逻辑。

如果你想要一个菜单​​项,你可能想要创建菜单栏并将JTable添加到任何容纳菜单栏的容器中。请注意,桌子本身仍然没有添加按钮,但视觉上也是如此。

答案 3 :(得分:1)

我最近创建了一个非常简单的教程,使用Tab-Separated Values(TSV)格式将JTable中的数据导出到excel文件中。应用程序提供“导出”按钮,然后触发一个对话框(JFileChooser)以帮助用户指定文件位置/目标。我希望这会有所帮助。

https://sites.google.com/site/teachmemrxymon/java/export-records-from-jtable-to-ms-excel

enter image description here

enter image description here