Ayuda: Arrastrar y Soltar elementos de un jTable a otro
Alguien que me auxilie, tengo mi aplicacion y tengo una jTable que muestra datos de una base de datos y deseo mover un elemento de la tabla y que me permita moverlo a otro jTable para que me muestre informacion de ese elemento.
- maxpine0721's blog
- Inicie sesión o regístrese para enviar comentarios
Comentarios
Tu codigo
Puedes compartir tu codigo para poder ayudarte mejor...
Dale un evento MouseListener a tu JTable identifica la fila que hayas seleccionado y extrae el contenido del primer table y añadelo al segundo....
Espero te puedavayudar en algo...
Te envio el codigo que tengo
La primera clase FromTransferHandler si arrastra el elementos pero la clase ToTransferHandler no lo hace
@Override
public int getSourceActions(JComponent comp){
return COPY;
}
private int column = 1;
@Override
public Transferable createTransferable(JComponent comp){
column = jTable1.getSelectedColumn();
if (column == 1){
return null;
}
return new StringSelection((String)jTable1.getValueAt(NONE, column));
}
@Override
public void exportDone(JComponent comp, Transferable trans, int action){
if(action != MOVE){
return;
}
dtm.removeRow(column);
}
}
class ToTransferHandler extends TransferHandler{
int action;
public ToTransferHandler(int action){
this.action = action;
}
@Override
public boolean canImport(TransferHandler.TransferSupport support){
if(!support.isDrop()){
return false;
}
if(!support.isDataFlavorSupported(DataFlavor.stringFlavor)){
return false;
}
boolean actionSupported = (action & support.getSourceDropActions()) == action;
if(actionSupported){
support.setDropAction(action);
return true;
}
return false;
}
@Override
public boolean importData(TransferHandler.TransferSupport support){
if(!canImport(support)){
return false;
}
JTable.DropLocation dl = (JTable.DropLocation)support.getDropLocation();
int row = dl.getRow();
String data;
try{
data = (String)support.getTransferable().getTransferData(DataFlavor.stringFlavor);
} catch(UnsupportedFlavorException | java.io.IOException e){
return false;
}
String[] rowData = data.split(",");
copy.insertRow(row, rowData);
Rectangle rect = jTable3.getCellRect(row, 0, false);
if (rect != null) {
jTable3.scrollRectToVisible(rect);
}
copy.insertElementAt(getNextString(count++), 0);
JTable jTable3 = (JTable)support.getComponent();
DefaultTableModel model = (DefaultTableModel)jTable3.getModel();
model.insertRow(row, rowData);
jTable3.setSelectionMode(row);
return true;
}
}
Ayuda: Arrastrar una fila de un JTable a otro
Tengo el siguiente codigo poero no lo esta haciendo no se que estoy haciendo mal
DefaultTableModel copy = new DefaultTableModel();
public UA_Modulo() {
initComponents();
//Se inicializan los identificadores de el JTable
String titulos[]={"UAprendizaje","Nombre UAprendizaje","Plan","Semestre","Nucleo","Tipo","Creditos","Horas","Creditos por Semestre","Horas por Semestre","Periodo"};
//Las columnas del JTable esstaran identificadas por los valores declarados en la variable titulos
dtm.setColumnIdentifiers(titulos);
//Se inicializan los identificadores de el JTable
String titulos2[]={"UAprendizaje","Nombre UAprendizaje","Plan","Semestre","Nucleo","Tipo","Creditos","Horas","Creditos por Semestre","Horas por Semestre","Periodo"};
//Las columnas del JTable esstaran identificadas por los valores declarados en la variable titulos
copy.setColumnIdentifiers(titulos2);
jTable1.setModel(dtm);
jTable3.setModel(copy);
jTable1.setTransferHandler(new FromTransferHandler());
jTable1.setDragEnabled(true);
jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
jTable3.setTransferHandler(new ToTransferHandler(TransferHandler.COPY));
jTable3.setDropMode(DropMode.INSERT_ROWS);
class FromTransferHandler extends TransferHandler{
@Override
public int getSourceActions(JComponent comp){
return COPY;
}
private int column = 1;
@Override
public Transferable createTransferable(JComponent comp){
column = jTable1.getSelectedColumn();
if (column == 1){
return null;
}
return new StringSelection((String)jTable1.getValueAt(NONE, column));
}
@Override
public void exportDone(JComponent comp, Transferable trans, int action){
if(action != MOVE){
return;
}
dtm.removeRow(column);
}
}
class ToTransferHandler extends TransferHandler{
int action;
public ToTransferHandler(int action){
this.action = action;
}
@Override
public boolean canImport(TransferHandler.TransferSupport support){
if(!support.isDrop()){
return false;
}
if(!support.isDataFlavorSupported(DataFlavor.stringFlavor)){
return false;
}
boolean actionSupported = (action & support.getSourceDropActions()) == action;
if(actionSupported){
support.setDropAction(action);
return true;
}
return false;
}
@Override
public boolean importData(TransferHandler.TransferSupport support){
if(!canImport(support)){
return false;
}
JTable.DropLocation dl = (JTable.DropLocation)support.getDropLocation();
int row = dl.getRow();
String data;
try{
data = (String)support.getTransferable().getTransferData(DataFlavor.stringFlavor);
} catch(UnsupportedFlavorException | java.io.IOException e){
return false;
}
String[] rowData = data.split(",");
copy.insertRow(row, rowData);
Rectangle rect = jTable3.getCellRect(row, 0, false);
if (rect != null) {
jTable3.scrollRectToVisible(rect);
}
copy.insertRow(row, rowData);
JTable jTable3 = (JTable)support.getComponent();
DefaultTableModel model = (DefaultTableModel)jTable3.getModel();
model.insertRow(row, rowData);
jTable3.setSelectionMode(row);
return true;
}