将 svg 文件拖放到 canvas
Drag and Drop svg file in a canvas
我创建了一个编辑器,我在其中显示了一个 canvas。我想允许 svg 文件的 DnD。
事实是我允许使用这部分代码删除文件:
int operations = DND.DROP_COPY | DND.DROP_MOVE;
Transfer[] types = new Transfer[]{FileTransfer.getInstance()};
DropTarget dt = new DropTarget(parent, operations);
dt.setTransfer(types);
dt.addDropListener(new DropTargetAdapter() {
public void drop(DropTargetEvent event) {
//ToDo
}
但它允许任何类型的文件,而我只想要 .svg 文件。
我如何创建一个条件,该条件将检查删除的文件是否为 .svg 文件,如果是,则使用导入的文件创建一个新的 canvas ?
我也想恢复丢失文件的路径,知道我该怎么做吗?
我真的不知道如何将导入的文件限制为 svg。
假设您的所有文件都具有有效的 .svg
扩展名,请检查适配器中的文件扩展名,并仅使用那些具有正确扩展名的文件,同时忽略具有其他扩展名的文件。
然后对文件执行您需要执行的操作:
public static void main(String[] args)
{
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("Whosebug");
shell.setLayout(new FillLayout());
Label label = new Label(shell, SWT.NONE);
DropTarget target = new DropTarget(label, DND.DROP_DEFAULT | DND.DROP_MOVE | DND.DROP_COPY);
Transfer[] transfers = new Transfer[]{FileTransfer.getInstance()};
target.setTransfer(transfers);
target.addDropListener(new DropTargetAdapter()
{
public void drop(DropTargetEvent event)
{
if (event.data == null)
{
event.detail = DND.DROP_NONE;
return;
}
String[] paths = (String[]) event.data;
List<File> files = new ArrayList<>();
for (String path : paths)
{
int index = path.lastIndexOf(".");
if (index != -1)
{
String extension = path.substring(index + 1);
if (Objects.equals(extension, "svg"))
files.add(new File(path));
}
}
System.out.println(files);
}
});
shell.pack();
shell.open();
shell.setSize(400, 300);
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
我创建了一个编辑器,我在其中显示了一个 canvas。我想允许 svg 文件的 DnD。
事实是我允许使用这部分代码删除文件:
int operations = DND.DROP_COPY | DND.DROP_MOVE;
Transfer[] types = new Transfer[]{FileTransfer.getInstance()};
DropTarget dt = new DropTarget(parent, operations);
dt.setTransfer(types);
dt.addDropListener(new DropTargetAdapter() {
public void drop(DropTargetEvent event) {
//ToDo
}
但它允许任何类型的文件,而我只想要 .svg 文件。 我如何创建一个条件,该条件将检查删除的文件是否为 .svg 文件,如果是,则使用导入的文件创建一个新的 canvas ?
我也想恢复丢失文件的路径,知道我该怎么做吗?
我真的不知道如何将导入的文件限制为 svg。
假设您的所有文件都具有有效的 .svg
扩展名,请检查适配器中的文件扩展名,并仅使用那些具有正确扩展名的文件,同时忽略具有其他扩展名的文件。
然后对文件执行您需要执行的操作:
public static void main(String[] args)
{
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("Whosebug");
shell.setLayout(new FillLayout());
Label label = new Label(shell, SWT.NONE);
DropTarget target = new DropTarget(label, DND.DROP_DEFAULT | DND.DROP_MOVE | DND.DROP_COPY);
Transfer[] transfers = new Transfer[]{FileTransfer.getInstance()};
target.setTransfer(transfers);
target.addDropListener(new DropTargetAdapter()
{
public void drop(DropTargetEvent event)
{
if (event.data == null)
{
event.detail = DND.DROP_NONE;
return;
}
String[] paths = (String[]) event.data;
List<File> files = new ArrayList<>();
for (String path : paths)
{
int index = path.lastIndexOf(".");
if (index != -1)
{
String extension = path.substring(index + 1);
if (Objects.equals(extension, "svg"))
files.add(new File(path));
}
}
System.out.println(files);
}
});
shell.pack();
shell.open();
shell.setSize(400, 300);
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}