Arrastrar y soltar texto en Java a través de DropTargetListener

Tengo un JEditorPane y he anulado el controlador de arrastre predeterminado. En el proceso, eliminé todo el comportamiento predeterminado de arrastrar y soltar para Texto.

Quiero que el usuario pueda arrastrar texto al control desde un navegador web o cualquier otra cosa y luego realizar algunas operaciones en él. A continuación se muestra el código que tengo hasta ahora. El archivo de arrastrar y soltar funciona bien, sin embargo, si coloco texto en él (por ejemplo, desde un sitio web), obtengo que java.lang.ClassCastException: java.io.StringReader cannot be cast to java.io.InputStreamsi cambio esto a un lector de cadenas, obtengojava.lang.ClassCastException: sun.awt.datatransfer.DataTransferer$ReencodingInputStream cannot be cast to java.io.StringReader

private class SpoolDragDroplistener implements DropTargetListener {

    public void drop(DropTargetDropEvent event) {
        // Accept copy drops
        event.acceptDrop(DnDConstants.ACTION_COPY);

        // Get the transfer which can provide the dropped item data
        Transferable transferable = event.getTransferable();

        // Get the data formats of the dropped item
        DataFlavor[] flavors = transferable.getTransferDataFlavors();

        // Loop through the flavors
        for (DataFlavor flavor : flavors) {
            try {
                // If the drop items are files
                if (flavor.isFlavorJavaFileListType()) {

                    // Get all of the dropped files
                    List<File> files = (List<File>) transferable
                            .getTransferData(flavor);

                    // Loop them through
                    for (File file : files) {
                        // Print out the file path
                        // System.out.println("File path is '" +
                        // file.getPath() + "'.");
                        //File xmlFormatFile = (File)cboXmlFiles.getSelectedItem();
                        String input = FileIO.getFileContents(file);
                        parseContents(input);

                        // only support one file for now
                        break;
                    }

                    //event.dropComplete(true);


                } else if(flavor.isRepresentationClassInputStream()) {
                    //StringReader isr = (StringReader)transferable.getTransferData(flavor);
                         /******* NOT WORKING *******/
                    InputStreamReader isr = new InputStreamReader(((InputStream)transferable.getTransferData(flavor)),"UTF-8");
                    //InputStream  is = (InputStream)transferable.getTransferData(flavor);
                    //String theString = new Scanner(is).useDelimiter("\\A").next();
                    //is.close();

                    StringBuilder sb = new StringBuilder();
                    int c=-1;
                    while( (c=isr.read()) != -1) {
                        sb.append((char)c);
                    }

                    parseContents(sb.toString());

                }

            } catch (Exception e) {
                // Print out the error stack

                editor.setText("ERROR: "+e.getMessage());
                e.printStackTrace();
            }
        }


        // Inform that the drop is complete
        event.dropComplete(true);
    }

    public void dropActionChanged(DropTargetDragEvent dtde) {
        // TODO Auto-generated method stub

    }

    public void dragEnter(DropTargetDragEvent dtde) {
        // TODO Auto-generated method stub

    }

    public void dragExit(DropTargetEvent dte) {
        // TODO Auto-generated method stub

    }

    public void dragOver(DropTargetDragEvent dtde) {
        // TODO Auto-generated method stub

    }

}
Respuesta 1

Estoy tratando de recuperar datos clob de la base de datos oracle como se muestra en informes.xml. Estoy usando la versión del controlador oracle jdbc "Versión del controlador Oracle JDBC - 10.0.2.0.0". Los siguientes son los errores i ...

No puedo entender la razón de la falla en UDR aquí: mientras estoy compilando el código en Windows usando Eclipse, el programa puede insertar el registro en informix DB que reside en UNIX mientras que ...

Tengo 2 DefaultListModels dentro de un JSplitPane. El lado izquierdo de JSplitPane tiene títulos RssChannel. Cuando se selecciona un título RssChannel, se supone que los títulos RssItem se muestran a la derecha ...

Quiero conectarme a mi base de datos MySQL con Java. Estoy usando JDBC y tengo el controlador instalado. (com.mysql.jdbc.Driver) El único problema es que sigo recibiendo un error: com.mysql.jdbc ....