OK, este problema está fuera de mi alcance. Estoy tratando de implementar un widget GUI en Swing que permite que los archivos se coloquen en una JTable, y permite arrastrar las filas de la JTable para volver a ordenarlas. Piense en las listas de reproducción de VLC o en iTunes.JTable - arrastre y suelte
Obtuve archivos del SO (Explorador, Buscador, etc.) trabajando muy bien, pero estoy teniendo un momento imposible con la reorganización de las filas de la tabla, una vez que los archivos están dentro. El problema es que cuando agregue un TransferHandler personalizado a la tabla, al arrastrar desde, la tabla se destruye instantáneamente. Este es un código de ejemplo:
import javax.swing.*;
public class TableTest
{
public static void main (String [] argv)
{
// setup table data
String [] columns = new String [] {"Foo", "Bar", "Baz", "Quux"};
String [][] data = new String [][] {{"A", "B", "C", "D"},
{"1", "2", "3", "4"},
{"i", "ii", "iii", "iv"}};
// create table
JTable table = new JTable(data, columns);
// set up drag and drop
table.setDragEnabled(true);
table.setDropMode(DropMode.INSERT_ROWS);
table.setFillsViewportHeight(true);
TransferHandler dnd = new TransferHandler() {
// here be code to handle drops, and one would
// presume drag exporting, too
};
table.setTransferHandler(dnd);
JScrollPane scroll = new JScrollPane(table);
// create and show window
JFrame window = new JFrame();
window.getContentPane().add(scroll);
window.pack();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
}
}
Ejecutar este código como está y verá que no se puede iniciar un lastre para la table.If en comentario la llamada a setTransferHandler() sobre la mesa, arrastrando las obras (es decir, cuando empiezo a arrastrar una fila de la tabla, saco el cursor X'd out circle diciendo que no puedo soltarlo allí). Pero tan pronto como se establece un TransferHandler para la tabla, no puedo arrastrar ninguna fila. El problema tiene que estar en TransferHandler, pero lo solucioné y depuré completamente, y he determinado que el arrastre nunca se inicia una vez que hay un TransferHandler en la mesa. ¿Qué estoy haciendo mal?
Cómo impar. Tengo el mismo problema. Estoy tratando de recordar si he hecho algún trabajo en el que tenía una tabla que admitía tanto arrastrar desde como hacia. – willcodejavaforfood