有没有人知道可以保存到文件的基于JTable的Swing组件或代码示例?即:提供一个菜单项或按钮,单击该按钮会提示用户输入文件位置并将表的内容保存到文件(CSV,XLS,TXT或其他任何内容)。
简单的部分是循环遍历行并保存到文件中。但是桌面本身也需要一个UI组件,允许用户启动保存。
答案 0 :(得分:6)
自己写。您所要做的就是使用table.getModel()。getValueAt(...)方法并循环遍历行和列,然后将数据写入文件。
答案 1 :(得分:2)
我使用以下方法实现了这一点:
Action
实施:DelimitedExportAction
。我通常会将此操作添加到JToolBar
,JMenuBar
或JPopupMenu
。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()
。我担心我无法提供代码,因为它是专有的,但希望这会让你走上正轨。祝你好运!
答案 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