Swing DnD, javaFileListFlavor, und CCP

Rudolf

Bekanntes Mitglied
Hi Leute,

ich habe für eine JTextArea DnD aktiviert, indem einen TransferHandler gesetzt habe. Dadurch wurde die CopyPast-Fähigkeit vom JTextArea entfernt. Wie stelle ich die wieder her?

Java:
	public void start() {
		mainFrame.getFileList().setTransferHandler(new TransferHandler() {
			@Override
			public boolean canImport(final TransferSupport support) {
				if (!support.isDrop()) {
					return false;
				}
				if (!support.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
					return false;
				}
				final boolean copySupported = (COPY & support.getSourceDropActions()) == COPY;
				if (copySupported) {
					support.setDropAction(COPY);
					return true;
				}
				return super.canImport(support);
			}

			@Override
			public boolean importData(final TransferSupport support) {
				if (!canImport(support)) {
					return false;
				}
				final Transferable t = support.getTransferable();
				final DataFlavor flavor = DataFlavor.javaFileListFlavor;
				try {
					@SuppressWarnings("unchecked")
					final Collection<File> files = (Collection<File>) t.getTransferData(flavor);
					upload(files);
				} catch (UnsupportedFlavorException | IOException ex) {
					return false;
				}
				return super.importData(support);
			}
		});
	}
 

Kevin94

Top Contributor
Du kannst dir bevor du den den TransferHandler setzt, die den DefaultTransferHandler hohlen, den deinem eigenen als Variable übergeben, sodass du alle Aufrufe, die du nicht behandeln kannst an diesen weiterreichen kannst.
Alternativ könntest du mithilfe von cut() und copy() die Befehle selber implementieren, ist aber deutlich mehr Aufwand.
 

Neue Themen


Oben