Java 可以保存到文件的JTable
有人知道可以保存到文件中的基于JTable的Swing组件或代码示例吗?i、 e:提供一个菜单项或按钮,单击该菜单项或按钮时,提示用户输入文件位置,并将表格内容保存到文件(CSV、XLS、TXT或其他文件)Java 可以保存到文件的JTable,java,jtable,Java,Jtable,有人知道可以保存到文件中的基于JTable的Swing组件或代码示例吗?i、 e:提供一个菜单项或按钮,单击该菜单项或按钮时,提示用户输入文件位置,并将表格内容保存到文件(CSV、XLS、TXT或其他文件) 最简单的部分是通过行循环并保存到文件中。但表本身也需要有一个UI组件,允许用户启动保存。自己编写。您所要做的就是使用table.getModel().getValueAt(…)方法,循环遍历行和列,然后将数据写入文件。编写您自己的数据。您所要做的就是使用table.getModel().ge
最简单的部分是通过行循环并保存到文件中。但表本身也需要有一个UI组件,允许用户启动保存。自己编写。您所要做的就是使用table.getModel().getValueAt(…)方法,循环遍历行和列,然后将数据写入文件。编写您自己的数据。您所要做的就是使用table.getModel().getValueAt(…)方法,循环遍历行和列,然后将数据写入文件。我不知道有任何类似JTable的Swing组件能够满足这一确切需求 但是,您希望按钮放在桌子上的什么位置?在我看来,将JTable添加到JScrollPane并将“save”按钮放在JScrollPane上,或者将JScrollPane添加到JPanel并将“save”按钮放在JPanel上,会更好地为您服务。我看不出JTable本身有按钮背后的逻辑
如果需要菜单项,可能需要创建菜单栏并将JTable添加到保存菜单栏的任何容器中。请注意,仍然没有向表本身添加按钮,但在视觉上也是一样的。我不知道有任何类似JTable的Swing组件能够满足这一确切需求 但是,您希望按钮放在桌子上的什么位置?在我看来,将JTable添加到JScrollPane并将“save”按钮放在JScrollPane上,或者将JScrollPane添加到JPanel并将“save”按钮放在JPanel上,会更好地为您服务。我看不出JTable本身有按钮背后的逻辑
如果需要菜单项,可能需要创建菜单栏并将JTable添加到保存菜单栏的任何容器中。请注意,仍然没有向表本身添加按钮,但在视觉上也是一样的。我使用以下方法实现了这一点:
- 创建一个
实现:操作
。我通常将此操作添加到delimitedExportation
、JToolBar
或JMenuBar
jpopMenu
- 公开一个方法
。在内部,此方法向void registerTable(JTable tbl)
添加一个JTable
。当给定的FocusListener
获得焦点时,将JTable
实例变量并启用该操作表设置为export
- 调用
方法时,如果actionPerformed(ActionEvent)
tableToExport!=空
- 与其迭代
,我建议迭代TableModel
,对于在基础JTable
上调用TableModel
的每一行,记住在视图和模型行/列索引之间转换。这对最终用户来说更直观,因为这意味着在导出过程中保留应用于getValueAt(int,int)
的任何排序和筛选。(在我的实现中,我实际上为用户提供了导出所有数据或可见数据的选择。)JTable
- 定义一个
,其作用是将DelimitedExportFormatter
返回的每个对象转换为getValueAt(int,int)
字符串。类似于为
提供呈现器时,此类应允许您为给定的JTable
类或特定列提供格式,其中特定列的格式优先。应用于所有其他值的默认格式应为:
value==null?“”:value.toString()
- 我允许在不同模式下配置操作(这也控制操作图标):
- 导出到文件:启动文件选择器对话框,允许用户指定保存目标
- 导出到Excel:将导出的数据保存为临时文件,并在Excel中打开
- 可配置导出:启动一个对话框,用户可以在其中指定:行分隔符、字段分隔符、要导出的列、要导出的行(全部、可见、选定)、保存目标(Excel/File)
我恐怕不能提供代码,因为它是专有的,但希望这会让你走上正轨。祝你好运 我使用以下方法实现了这一点:
- 创建一个
实现:操作
。我通常将此操作添加到delimitedExportation
、JToolBar
或JMenuBar
jpopMenu
- 公开一个方法
。在内部,此方法向void registerTable(JTable tbl)
添加一个JTable
。当给定的FocusListener
获得焦点时,将JTable
实例变量并启用该操作表设置为export
- 调用
方法时,如果actionPerformed(ActionEvent)
tableToExport!=空
- 与其迭代
,我建议迭代TableModel
,对于在基础JTable
上调用TableModel
的每一行,记住在视图和模型行/列索引之间转换。这对最终用户来说更直观,因为这意味着在导出过程中保留应用于getValueAt(int,int)
的任何排序和筛选。(在我的实现中,我实际上为用户提供了导出所有数据或可见数据的选择。)JTable
- 定义一个
,其作用是将DelimitedExportFormatter
返回的每个对象转换为getValueAt(int,int)
字符串。类似于向
此类sho提供渲染器时JTable