public void actionPerformed(ActionEvent e) {
        if (e.getActionCommand().compareTo("Copy") == 0) {
            StringBuffer sbf = new StringBuffer();
            // Check to ensure we have selected only a contiguous block of
            // cells
            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, I18N.getMessageString("Invalid copy selection."),
                                              I18N.getLabelString("Error"),
                                              JOptionPane.ERROR_MESSAGE);
                return;
            }
            for (int i = 0; i < numrows; i++) {
                for (int j = 0; j < numcols; j++) {
                    sbf.append(jTable1.getValueAt(rowsselected[i],
                                                  colsselected[j]));
                    if (j < numcols - 1) {
                        sbf.append("\t");
                    }
                }
                sbf.append("\n");
            }
            stsel = new StringSelection(sbf.toString());
            system = Toolkit.getDefaultToolkit().getSystemClipboard();
            system.setContents(stsel, stsel);
        }
        /*    if (e.getActionCommand().compareTo("Paste") == 0) {
              //System.out.println("Trying to Paste");
              int startRow = (jTable1.getSelectedRows())[0];
              int startCol = (jTable1.getSelectedColumns())[0];
              try {
         String trstring = (String) (system.getContents(this).getTransferData(
                  DataFlavor.stringFlavor));
                //System.out.println("String is:"+trstring);
                StringTokenizer st1 = new StringTokenizer(trstring, "\n");
                for (int i = 0; st1.hasMoreTokens(); i++) {
                  rowstring = st1.nextToken();
                  StringTokenizer st2 = new StringTokenizer(rowstring, "\t");
                  for (int j = 0; st2.hasMoreTokens(); j++) {
                    value = (String) st2.nextToken();
                    if (startRow + i < jTable1.getRowCount() &&
                        startCol + j < jTable1.getColumnCount()) {
                      if(jTable1.isCellEditable(startRow + i, startCol + j)) {
                        jTable1.setValueAt(value, startRow + i, startCol + j);
                      }
                    }
                    //System.out.println("Putting "+ value+"at row="+startRow+i+"column="+startCol+j);
                  }
                }
              } catch (Exception ex) {
                ex.printStackTrace();
              }
            }*/
    }