【发布时间】:2013-12-15 14:09:15
【问题描述】:
我正在尝试制作简单的 java 应用程序来将图像拖放到 JFrame 上的 JLabel 中,但没有运气。稍后我将在我的程序中使用这个功能,它将接收丢弃的图像,调整它的大小,然后调整亮度。制作它并保存该图像以供进一步编辑的最简单方法是什么?
这是我的代码,它只接收丢弃的文本:
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.TransferHandler;
class DragNDrop extends JFrame {
JLabel label;
public DragNDrop() {
setTitle("Simple Drag & Drop");
setLayout(null);
label = new JLabel();
label.setBounds(0, 0, 200, 200);
add(label);
label.setTransferHandler(new TransferHandler("text"));
setSize(200, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new DragNDrop();
}
}
【问题讨论】:
-
首先,
new TransferHandler("text")创建了一个使用 JLabel 的getText和setText方法的 TransferHandler,因此它不可能处理图像。其次,公共的 TransferHandler 构造函数创建了一个只适用于其他 Java 组件的 TransferHandler;它不会接受来自非 Java 应用程序的拖动数据。您必须编写自己的 TransferHandler 子类。 -
但是 TransferHandler 可以处理从外部 java 应用程序中删除的文本。我不知道怎么写那个子类..
-
您可以在什么操作系统中将文本拖放到您的应用程序中?您从哪个其他应用程序拖动文本?我无法让它在 Linux 或 Windows 7 中工作。TransferHandler 默认实现的源代码不允许使用除 DataFlavor.javaJVMLocalObjectMimeType 之外的任何 DataFlavor。
-
我在 Windows 8 中删除文本,从 Netbeans 中选择它并放到应用程序中。
标签: java image drag-and-drop