Java 可以保存到文件的JTable

Java 可以保存到文件的JTable,java,jtable,Java,Jtable,有人知道可以保存到文件中的基于JTable的Swing组件或代码示例吗?i、 e:提供一个菜单项或按钮,单击该菜单项或按钮时,提示用户输入文件位置,并将表格内容保存到文件(CSV、XLS、TXT或其他文件) 最简单的部分是通过行循环并保存到文件中。但表本身也需要有一个UI组件,允许用户启动保存。自己编写。您所要做的就是使用table.getModel().getValueAt(…)方法,循环遍历行和列,然后将数据写入文件。编写您自己的数据。您所要做的就是使用table.getModel().ge

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


最简单的部分是通过行循环并保存到文件中。但表本身也需要有一个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)
    返回的每个对象转换为
    字符串。类似于向
    JTable
    此类sho提供渲染器时