有誰知道基於JTable的Swing組件或代碼示例可以保存到文件?即:提供一個菜單項或按鈕,當點擊時提示用戶輸入文件位置並將表格的內容保存到文件(CSV,XLS,TXT或其他)。JTable,可以保存到文件
簡單的部分是遍歷行並保存到文件。但是,在表格本身上也需要有一個UI組件,允許用戶啓動保存。
有誰知道基於JTable的Swing組件或代碼示例可以保存到文件?即:提供一個菜單項或按鈕,當點擊時提示用戶輸入文件位置並將表格的內容保存到文件(CSV,XLS,TXT或其他)。JTable,可以保存到文件
簡單的部分是遍歷行並保存到文件。但是,在表格本身上也需要有一個UI組件,允許用戶啓動保存。
寫你自己的。你所要做的就是使用table.getModel()。getValueAt(...)方法並遍歷行和列,然後將數據寫入文件。
剛剛更新了問題,提及在表格本身上還需要有一個UI組件,以允許用戶啓動保存。 – tukushan 2009-11-24 21:32:01
但這只是一個按鈕,標記爲「保存」,後面的一個動作稱爲保存方法。 – 2009-11-24 21:32:53
我不知道任何滿足這種確切需求的類似於JTable的Swing組件。
但是,您希望在哪裏放置按鈕?在我看來,通過將JTable添加到JScrollPane並將「保存」按鈕放在JScrollPane上或將JScrollPane添加到JPanel並將「保存」按鈕放在JPanel上,您會更好。我沒有看到JTable本身有一個按鈕背後的邏輯。
如果你想要一個菜單項,你可能想要創建菜單欄並將JTable添加到任何容納菜單欄的容器中。在桌子上還沒有添加按鈕,請注意,但它在視覺上是相同的。
我已經實現了這個使用以下方法:
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()
。恐怕我不能提供的代碼,因爲它是專有的,但希望這將讓你在正確的軌道上。祝你好運!
我最近創建了一個非常簡單的教程,使用Tab-Separated Values(TSV)格式將JTable的數據導出到excel文件中。應用程序提供一個導出按鈕,然後觸發一個對話框(JFileChooser)來幫助用戶指定文件的位置/目的地。我希望這有助於某種方式。
https://sites.google.com/site/teachmemrxymon/java/export-records-from-jtable-to-ms-excel
凡在桌子上你會看到這個按鈕?可以將按鈕放在表格單元格中,但我認爲在這種特殊情況下這是沒有意義的。爲什麼按鈕不能位於JTable的上方,下方或旁邊?另外,如果您將TableModel的內容保存爲文件,您是否也需要加載內容? – rob 2009-11-24 22:48:21