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!!!
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!!!
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.
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) &&
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 < 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 < L; i++){
for (int j = 0;j < Cx+1;j++){
tblMain.setValueAt(rows[i][j],i,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;
}