⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fileandtexttransferhandler.java

📁 JAVA 工作指南 可以说是程序员必备的东西哦
💻 JAVA
字号:
package dnd;/* * FileAndTextTransferHandler.java is used by the 1.4 * DragFileDemo.java example. */import java.io.*;import java.util.*;import java.awt.*;import java.awt.datatransfer.*;import java.awt.event.*;import javax.swing.*;import javax.swing.text.*;class FileAndTextTransferHandler extends TransferHandler {    private DataFlavor fileFlavor, stringFlavor;    private TabbedPaneController tpc;    private JTextArea source;    private boolean shouldRemove;    protected String newline = "\n";    //Start and end position in the source text.    //We need this information when performing a MOVE    //in order to remove the dragged text from the source.    Position p0 = null, p1 = null;    FileAndTextTransferHandler(TabbedPaneController t) {       tpc = t;       fileFlavor = DataFlavor.javaFileListFlavor;       stringFlavor = DataFlavor.stringFlavor;    }    public boolean importData(JComponent c, Transferable t) {        JTextArea tc;        if (!canImport(c, t.getTransferDataFlavors())) {            return false;        }        //A real application would load the file in another        //thread in order to not block the UI.  This step        //was omitted here to simplify the code.        try {            if (hasFileFlavor(t.getTransferDataFlavors())) {                String str = null;                java.util.List files =                     (java.util.List)t.getTransferData(fileFlavor);                for (int i = 0; i < files.size(); i++) {                    File file = (File)files.get(i);                    //Tell the tabbedpane controller to add                    //a new tab with the name of this file                    //on the tab.  The text area that will                    //display the contents of the file is returned.                    tc = tpc.addTab(file.toString());                    BufferedReader in = null;                    try {                        in = new BufferedReader(new FileReader(file));                        while ((str = in.readLine()) != null) {                            tc.append(str + newline);                        }                    } catch (IOException ioe) {                        System.out.println(                          "importData: Unable to read from file " +                           file.toString());                    } finally {                        if (in != null) {                            try {                                in.close();                            } catch (IOException ioe) {                                 System.out.println(                                  "importData: Unable to close file " +                                   file.toString());                            }                        }                    }                }                return true;            } else if (hasStringFlavor(t.getTransferDataFlavors())) {                tc = (JTextArea)c;                if (tc.equals(source) && (tc.getCaretPosition() >= p0.getOffset()) &&                                         (tc.getCaretPosition() <= p1.getOffset())) {                    shouldRemove = false;                    return true;                }                String str = (String)t.getTransferData(stringFlavor);                tc.replaceSelection(str);                return true;            }        } catch (UnsupportedFlavorException ufe) {            System.out.println("importData: unsupported data flavor");        } catch (IOException ieo) {            System.out.println("importData: I/O exception");        }        return false;    }    protected Transferable createTransferable(JComponent c) {        source = (JTextArea)c;        int start = source.getSelectionStart();        int end = source.getSelectionEnd();        Document doc = source.getDocument();        if (start == end) {            return null;        }        try {            p0 = doc.createPosition(start);            p1 = doc.createPosition(end);        } catch (BadLocationException e) {            System.out.println(              "Can't create position - unable to remove text from source.");        }        shouldRemove = true;        String data = source.getSelectedText();        return new StringSelection(data);    }    public int getSourceActions(JComponent c) {        return COPY_OR_MOVE;    }    //Remove the old text if the action is a MOVE.    //However, we do not allow dropping on top of the selected text,    //so in that case do nothing.    protected void exportDone(JComponent c, Transferable data, int action) {        if (shouldRemove && (action == MOVE)) {            if ((p0 != null) && (p1 != null) &&                (p0.getOffset() != p1.getOffset())) {                try {                    JTextComponent tc = (JTextComponent)c;                    tc.getDocument().remove(                       p0.getOffset(), p1.getOffset() - p0.getOffset());                } catch (BadLocationException e) {                    System.out.println("Can't remove text from source.");                }            }        }        source = null;    }    public boolean canImport(JComponent c, DataFlavor[] flavors) {        if (hasFileFlavor(flavors))   { return true; }        if (hasStringFlavor(flavors)) { return true; }        return false;    }    private boolean hasFileFlavor(DataFlavor[] flavors) {        for (int i = 0; i < flavors.length; i++) {            if (fileFlavor.equals(flavors[i])) {                return true;            }        }        return false;    }    private boolean hasStringFlavor(DataFlavor[] flavors) {        for (int i = 0; i < flavors.length; i++) {            if (stringFlavor.equals(flavors[i])) {                return true;            }        }        return false;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -