SwingのJTablesとExcel間のコピーと貼り付け機能を実現
5587 ワード
現在、多くのビジネスアプリケーションはJavaを使用して開発されており、今後、Javaを使用して開発されるアプリケーションが増えます.多くのアプリケーションでは、SwingのJTableコンポーネントを使用して、スプレッドシートのような形式でデータを表示しています.ビジネスアプリケーションがMicrosoft Excelにデータをインポートしたり、Microsoft Excelからデータをエクスポートしたりすることができる場合、ユーザーはどこにでもあるスプレッドシートプログラムの強力な機能を使用することができます.このJavaテクニックは、システムクリップボードを理解し、JTableがExcelとインタラクティブで相互運用できるようにします.この有用な機能の追加は、現在のアプリケーションに別のコードを追加するだけで実現できます.
この目的を達成するには、ここに示すファイルをコピーするだけです.JAvaは、それをコンパイルし、アプリケーションがExcelAdapterを見つけることができることを確認します.classファイル;終わったら、JTableでExcelと通話できます!この行のコードのみで、Excelへのコピー(Ctrl+C)と貼り付け(Ctrl+V)、およびExcelからのコピーと貼り付けを実現する方法を示します.ExcelAdapterを使用するアプリケーションの例も提供されています.
コードの下には、このタスクを実際に完了したアダプタコード(ExcelAdapter.javaと呼ばれます):
この目的を達成するには、ここに示すファイルをコピーするだけです.JAvaは、それをコンパイルし、アプリケーションがExcelAdapterを見つけることができることを確認します.classファイル;終わったら、JTableでExcelと通話できます!この行のコードのみで、Excelへのコピー(Ctrl+C)と貼り付け(Ctrl+V)、およびExcelからのコピーと貼り付けを実現する方法を示します.ExcelAdapterを使用するアプリケーションの例も提供されています.
コードの下には、このタスクを実際に完了したアダプタコード(ExcelAdapter.javaと呼ばれます):
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.datatransfer.*;
import java.util.*;
/**
* ExcelAdapter JTables
* 。
* Excel 。
* JTables Excel 。
*/
public class ExcelAdapter implements ActionListener
{
private String rowstring,value;
private Clipboard system;
private StringSelection 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
Excel
Excel 。 , 。 , / ,Excel , 。 ? :Excel 。 , , 。 Excel , ; 。
, ExcelAdapter.java , , , JTable 。
, 。 , , actionPerformed 。 , Excel , 。 , , , JTables 。
Java Jtables Excel 。 JTable - , , Jtable 。 Java Tip 。