JTable - área de transferência

4 respostas
J

Fala pessoal

Existe um modo deu copiar células do Excel e colar no JTable, ou copiar de um JTable e colar em outro?

Valeu!!!

4 Respostas

J

Eu fiz um teste da seguinte maneira:

public void setClipboardContents( String aString ){

StringSelection stringSelection = new StringSelection( aString );

Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();

clipboard.setContents( stringSelection, null );

}

Mas assim, só consigo colocar uma string na área de transferência. Não consigo colocar um objeto ou um conjunto ordenado de células de um JTable.

J

Bom, pelo menos copiar do Excel e colar num JTable eu já consegui:

Pra quem quiser:

CLASSE CLIPBOARD **********************************************

import java.awt.datatransfer.Clipboard;

import java.awt.datatransfer.Transferable;

import java.awt.datatransfer.StringSelection;

import java.awt.datatransfer.DataFlavor;

import java.awt.datatransfer.UnsupportedFlavorException;

import java.awt.Toolkit;

import <a href="http://java.io">java.io</a>.*;

import javax.swing.JTable;

public class ClipBoard{

/** Creates a new instance of ClipBoard */
public ClipBoard() {
}

public String getClipboardContents() {
    String result = "";
    Clipboard clipboard =
                                Toolkit.getDefaultToolkit().getSystemClipboard();
    //odd: the Object param of getContents is not currently used
    Transferable contents = clipboard.getContents(null);
    boolean hasTransferableText = (contents != null) &amp;&amp;
            contents.isDataFlavorSupported(DataFlavor.stringFlavor);
    
    if ( hasTransferableText ) {
        try {
            result =
                   (String)contents.getTransferData(DataFlavor.stringFlavor);
        }
        catch (UnsupportedFlavorException ex){
            //highly unlikely since we are using a standard DataFlavor
            System.out.println(ex);
            ex.printStackTrace();
        }
        catch (IOException ex) {
            System.out.println(ex);
            ex.printStackTrace();
        }
    }
    return result;
}

(…)
}

MEU BOTÃO QUE COLA NO JTABLE


private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {

String[][] rows = new String[50][50];

ClipBoard clip = new ClipBoard();

String contents = clip.getClipboardContents();
int charInic = 0;
    int L = 0,C = 0,Cx = 0;
    
    for (int i = 0; i &lt; contents.length(); i++ ){
        if (contents.substring(i,i+1).equalsIgnoreCase("\t")){
            rows[L][C] = contents.substring(charInic,i+1);
            charInic = i+1;
            C++;
        }
        if (contents.substring(i,i+1).equalsIgnoreCase("\n")){
            rows[L][C] = contents.substring(charInic,i+1);
            charInic = i+1;
            L++;
            Cx = C;
            C = 0;
        }
    }
    
    for (int i = 0; i &lt; L; i++){
        for (int j = 0;j &lt; Cx+1;j++){
            tblMain.setValueAt(rows[i][j],i,j);
        }
    }
    
}
J

CORREÇÃO:

if (contents.substring(i,i+1).equalsIgnoreCase("\t")){

rows[L][C] = contents.substring(charInic,i+1);

charInic = i+1;

C++;

Cx = C;

}

if (contents.substring(i,i+1).equalsIgnoreCase("\n")){

rows[L][C] = contents.substring(charInic,i+1);

charInic = i+1;

L++;

C = 0;

}
A

Olá javalulu

http://www.javaworld.com/javaworld/javatips/jw-javatip77.html

Criado 10 de novembro de 2006
Ultima resposta 13 de nov. de 2006
Respostas 4
Participantes 2