📄 demo.java
字号:
} if (o == null) t.beep(); else object.setObject(o); } if (b == copyFiles) c.setContents(new FilesSelection(files.getFiles()), null); if (b == pasteFiles) { java.util.List fs = null; try { fs = (java.util.List) c.getData(DataFlavor.javaFileListFlavor); } catch (UnsupportedFlavorException dfnse) { } catch (IOException ioe) { } catch (ClassCastException cce) { } if (fs == null) t.beep(); else files.setFiles(fs); } } /** * Simple awt component that shows an settable image. */ static class ImageComponent extends Component { private Image image; ImageComponent(Image image) { setSize(20, 20); setImage(image); } Image getImage() { return image; } void setImage(Image image) { this.image = image; repaint(); } public void paint(Graphics g) { g.drawImage(image, 0, 0, getWidth(), getHeight(), this); } } /** * Simple awt component that shows a settable Serializable object. */ static class ObjectComponent extends TextArea { private Serializable object; ObjectComponent(Serializable object) { super("", 2, 80, TextArea.SCROLLBARS_NONE); setEditable(false); setEnabled(false); setObject(object); } Serializable getObject() { return object; } void setObject(Serializable object) { this.object = object; setText("Class: " + object.getClass().getName() + "\n" + "toString(): " + object.toString()); repaint(); } } /** * Simple awt component that shows a settable list of Files. */ static class FilesComponent extends List { private File[] files; FilesComponent(File[] files) { super(4, true); setFiles(files); } File[] getFiles() { String[] strings = getSelectedItems(); if (strings == null || strings.length == 0) return (File[]) files.clone(); File[] fs = new File[strings.length]; for (int i = 0; i < strings.length; i++) fs[i] = new File(strings[i]); return fs; } void setFiles(File[] files) { this.files = files; removeAll(); for (int i = 0; i < files.length; i++) { addItem(files[i].toString()); select(i); } } void setFiles(java.util.List list) { File[] fs = new File[list.size()]; int i = 0; Iterator it = list.iterator(); while (it.hasNext()) fs[i++] = (File) it.next(); setFiles(fs); } } /** * Simple awt component that shows a settable list of DataFlavors. */ static class FlavorsComponent extends List { FlavorsComponent(DataFlavor[] flavors) { super(4); setFlavors(flavors); } void setFlavors(DataFlavor[] flavors) { removeAll(); for (int i = 0; i < flavors.length; i++) { addItem(flavors[i].getMimeType()); } } } /** * Simple awt component that shows the details for and an object as * found on the system clipboard as represented by a given * DataFlavor. */ static class FlavorDetailsComponent extends TextArea { private DataFlavor df; FlavorDetailsComponent(DataFlavor df) { super("", 2, 80, TextArea.SCROLLBARS_NONE); setEditable(false); setEnabled(false); setDataFlavor(df); } void setDataFlavor(DataFlavor df) { if (df == this.df || (df != null && df.equals(this.df))) return; this.df = df; if (df == null) setText("No flavor selected"); else { Object o = null; Throwable exception = null; try { Toolkit t = Toolkit.getDefaultToolkit(); Clipboard c = t.getSystemClipboard(); o = c.getData(df); } catch (Throwable t) { exception = t; } if (o != null) { setText("Data: " + o.getClass().getName() + "\n" + o); } else { setText("Error retrieving: " + df + "\n" + exception != null ? exception.toString() : ""); } } repaint(); } } /** * Helper class to put an Image on a clipboard as * DataFlavor.imageFlavor. */ static class ImageSelection implements Transferable { private final Image img; ImageSelection(Image img) { this.img = img; } static DataFlavor[] flavors = new DataFlavor[] { DataFlavor.imageFlavor }; public DataFlavor[] getTransferDataFlavors() { return (DataFlavor[]) flavors.clone(); } public boolean isDataFlavorSupported(DataFlavor flavor) { return flavor.equals(DataFlavor.imageFlavor); } public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException { if (!isDataFlavorSupported(flavor)) throw new UnsupportedFlavorException(flavor); return img; } } /** * Helper class to put an Object on a clipboard as Serializable * object. */ static class ObjectSelection implements Transferable { private final Serializable obj; ObjectSelection(Serializable obj) { this.obj = obj; } static DataFlavor objFlavor = new DataFlavor(Serializable.class, "Serialized Object"); static DataFlavor[] flavors = new DataFlavor[] { objFlavor }; public DataFlavor[] getTransferDataFlavors() { return (DataFlavor[]) flavors.clone(); } public boolean isDataFlavorSupported(DataFlavor flavor) { return flavor.equals(objFlavor); } public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException { if (!isDataFlavorSupported(flavor)) throw new UnsupportedFlavorException(flavor); return obj; } } /** * Helper class to put a List of Files on the clipboard as * DataFlavor.javaFileListFlavor. */ static class FilesSelection implements Transferable { private final File[] files; FilesSelection(File[] files) { this.files = files; } static DataFlavor[] flavors = new DataFlavor[] { DataFlavor.javaFileListFlavor }; public DataFlavor[] getTransferDataFlavors() { return (DataFlavor[]) flavors.clone(); } public boolean isDataFlavorSupported(DataFlavor flavor) { return flavor.equals(DataFlavor.javaFileListFlavor); } public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException { if (!isDataFlavorSupported(flavor)) throw new UnsupportedFlavorException(flavor); return Arrays.asList(files); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -