實現 Swing 的 JTables 和 Excel 間的複製和貼上功能 (轉)
JTable 和 圖表是常被用在網格或表格中顯示資料。通常,希望輸入到 JTable 的資料已經存在於 Excel 電子表格中。Excel 格式使用在非 Excel 中來實現匯入-匯出功能。因為如此, 軟體也應該提供通用的剪貼簿功能,例如在 JTable 和 Excel 間複製和貼上。本文展示瞭如何使用貼上板在 Java 和 Excel 間複製資料。使用這一 Java 技巧中提供的介面卡類,只需一行程式碼即可新增在 JTables 和 Excel 間複製和貼上資訊的功能。請注意,由於未簽名的 applet 不能使用系統剪貼簿,此功能不適用於這些 Java 程式。
當今很多業務應用程式都是使用 Java 開發的,並且以後這種用 Java 開發的應用會更多。而在許多應用程式都使用了 的 JTable ,以類似電子表格的格式顯示資料。如果業務應用程式可以將資料匯入 Excel 和從 Microsoft Excel 中匯出資料,則會為使用者帶來方便,使使用者可以使用無處不在的該電子表格程式的強大功能。此 Java 技巧將幫助您理解系統剪貼簿,並使您的 JTable 能夠與 Excel 互動和互操作。您將看到,透過在當前應用程式中僅僅新增另外的一行程式碼即可實現這一有用功能的新增。
要實現這一目標,需要做的只是複製這裡給出的 ExcelAdapter.java,對其進行編譯,並確保您的應用程式可以找到 ExcelAdapter.class 檔案;做完後,JTable 就可以與 Excel 進行通話了!我們將向您展示僅透過這一行程式碼,如何實現到 Excel 的複製 (Ctrl+C) 和貼上 (Ctrl+V) 以及從 Excel 進行的複製和貼上。另外還提供了一個使用 ExcelAdapter 的示例應用程式。
er.*; import java.util.*; /** * ExcelAdapter 實現 JTables 中的複製貼上 * 剪貼簿功能。 介面卡所用的剪貼簿資料格式 * 與 Excel 所用的剪貼簿格式相容。這提供了 * 支援的 JTables 和 Excel 間的互操作。 */ public class ExcelAdapter implements ActionListener { private String rowstring,value; private Clipboard system; private Stringion stsel; private JTable jTable1 ; /** * Excel 介面卡由 JTable 構成, * 它實現了 JTable 上的複製貼上 * 功能,並充當剪貼簿程式。 */ public ExcelAdapter(JTable myJTable) { jTable1 = myJTable; KeyStroke copy = KeyStroke.getKeyStroke(KeyEvent.VK_C,ActionEvent.CTRL_MASK,false); // 確定複製按鍵使用者可以對其進行修改 // 以實現其它按鍵組合的複製功能。 KeyStroke paste = KeyStroke.getKeyStroke(KeyEvent.VK_V,ActionEvent.CTRL_MASK,false); // 確定貼上按鍵使用者可以對其進行修改 // 以實現其它按鍵組合的複製功能。 jTable1.registerKeyboardAction(this,"Copy",copy,JComponent.WHEN_FOCUSED); jTable1.registerKeyboardAction(this,"Paste",paste,JComponent.WHEN_FOCUSED); system = Toolkit.getDefaultToolkit().getSystemClipboard(); } /** * 此介面卡執行圖表的公共讀方法。 */ public JTable getJTable() {return jTable1;} public void setJTable(JTable jTable1) {this.jTable1=jTable1;} /** * 在我們監聽此實現的按鍵上啟用這種方法。 * 此處,它監聽複製和貼上 ActionCommands。 * 包含不相鄰單元格的選擇導致選擇無效, * 而且此後複製動作無法。 * 貼上的方法是將選定內容的左上角與 * JTable 的當前選定內容的第一個元素對齊。 */ public void actionPerformed(ActionEvent e) { if (e.getActionCommand().compareTo("Copy")==0) { StringBuffer sbf=new StringBuffer(); // 檢查以確保我們僅選擇了單元格的 // 相鄰塊 int numcols=jTable1.getSelectedColumnCount(); int numrows=jTable1.getSelectedRowCount(); int[] rowsselected=jTable1.getSelectedRows(); int[] colsselected=jTable1.getSelectedColumns(); if (!((numrows-1==rowsselected[rowsselected.length-1]-rowsselected[0] && numrows==rowsselected.length) && (numcols-1==colsselected[colsselected.length-1]-colsselected[0] && numcols==colsselected.length))) { JOptionPane.showMessageDialog(null, "Invalid Copy Selection", "Invalid Copy Selection", JOptionPane.ERROR_MESSAGE); return; } for (int i=0;i在介面卡中,複製和貼上功能的啟用按鍵都經過了註冊。其後,無論何時鍵入啟用的按鍵, actionPerformed 方法就會被。如果是複製操作,則所選擇的單元格資料都會為 Excel 進行適當的標記,並寫入系統剪貼簿中。如果是貼上操作,則將系統剪貼簿中的資料轉換為字串形式,並經過分析,根據所選擇的單元格植入 JTables 單元格中。
結論
使用用 Java 編寫的表格的使用者常常希望 Jtables 中的資料與 Excel 中的資料處理方法相似。它並不是編寫程式碼來實現每個 JTable 上的複製-貼上功能,而是更為簡單地編寫通用的介面卡,只需新增一行程式碼即可將所需功能新增到每個 Jtable 中。此 Java Tip 中提供的介面卡正好做到這一點。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-996114/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JavaScript實現複製和貼上功能JavaScript
- UILabel實現複製貼上功能UI
- 利用JS實現複製/貼上功能JS
- 在vSphere中實現複製貼上功能
- Python中Wxpython實現剪下、複製、貼上和檔案開啟功能Python
- vue 中實現複製貼上Vue
- Vue使用vue-clipboard2實現複製貼上功能Vue
- Delphi_Excel例子:單元格複製貼上 (轉)Excel
- 複製和貼上的js程式碼 for IE/FireFox/mozilla/ns(轉)JSFirefox
- Linux下命令列中的複製和貼上Linux命令列
- Linux 裡的複製與貼上 (轉)Linux
- oracle erp不能和其他文件複製貼上Oracle
- JS實現複製到剪貼簿(支援IE和Firefox)JSFirefox
- js複製黏貼功能JS
- 如何實現讓編輯支援word內容和截圖的複製黏貼
- 20 行 JS 程式碼,實現複製到剪貼簿功能JS
- Python 實現Excel和TXT文字格式之間的相互轉換PythonExcel
- 前端實現複製功能前端
- js實現複製功能JS
- CEdit控制元件中實現複製、貼上、剪下等操作的快捷鍵控制元件
- 原生javasript實現Ctr+c複製Ctr+v貼上Java
- 實現前端點選按鈕自動複製剪貼簿功能前端
- 複製貼上不了怎麼辦?Mac複製貼上不瞭解決方法Mac
- Linux的VI (刪除貼上,複製)Linux
- ClipboardJS複製貼上外掛的使用JS
- NFT 的建立和轉移功能實現
- 破解“無法複製貼上”
- 電腦無法複製貼上怎麼回事?電腦無法複製貼上的解決方法
- js實現的清除複製黏貼文字的格式程式碼JS
- PL/SQL中複製中文再貼上出現亂碼問題的解決【轉】SQL
- Windows遠端桌面連線失敗和無法複製貼上Windows
- idea無法黏貼_IntelliJ Idea 複製貼上的問題(轉載)IdeaIntelliJ
- (轉)iOS長按textView複製貼上顯示中文iOSTextView
- 蘋果Mac電腦的複製貼上不能用蘋果Mac
- win10系統無法複製貼上怎麼辦 win10電腦複製貼上功能失效如何修復Win10
- 前端實現Excel匯入和匯出功能前端Excel
- pyqt5 QTableWidget 表格控制元件中剪下板複製貼上的實現QT控制元件
- 去除Word帶的智慧貼上功能(轉)