- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想处理来自其他应用程序的File Drops
。现在我可以区分不同的 DataFlavors 并接受正确的类型。
这是我正在使用的源代码:
private TransferHandler transferehandler = new TransferHandler(){
@Override
public boolean canImport(TransferHandler.TransferSupport support) {
if (!support.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
return false;
}
boolean copySupported = (MOVE & support.getSourceDropActions()) == MOVE;
if (!copySupported) {
return false;
}
support.setDropAction(MOVE);
return true;
}
第一部分是设置我的 canImport,检查文件是否支持 MOVE
选项,并检查它是否是一个文件。
@Override
public boolean importData(TransferHandler.TransferSupport support){
if(!canImport(support))
return false;
Transferable t = support.getTransferable();
try {
List<File> l = (List<File>) t.getTransferData(DataFlavor.javaFileListFlavor);
System.out.println(l);
} catch (UnsupportedFlavorException | IOException e) {
e.printStackTrace();
return false;
}
return true;
}
};
这是我对 importData
方法的实现。出于测试目的,我打印拖到具有此 TransferHandler
的 Component
上的每个文件。
通过阅读JavaDocs我只能处理来自不同 JPanels
的掉落。但我实际上想创建这样的东西:
希望你明白我的意思。
最佳答案
在这里,您可以 DnD 任何子组件(就像我在评论中写的那样)。您可以将两者放在红色(父内容 Pane )和蓝色(子)组件上。
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.TransferHandler;
public class TransferableJFrame {
public static void main(String[] args) {
JFrame f=new JFrame();
f.setSize(1000, 1000);
JPanel contentPane=new JPanel();
contentPane.setOpaque(true);
contentPane.setBackground(Color.red);
contentPane.setLayout(new FlowLayout());
contentPane.setTransferHandler(new MyTrasnferHandler());
JPanel child=new JPanel();
child.setOpaque(true);
child.setBackground(Color.BLUE);
child.setPreferredSize(new Dimension (600,600));
contentPane.add(child);
f.setContentPane(contentPane);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
private static class MyTrasnferHandler extends TransferHandler{
@Override
public boolean canImport(JComponent comp, DataFlavor[] transferFlavors) {
System.out.println("we will drop here");
return true;
}
@Override
public boolean importData(JComponent comp, Transferable t) {
System.out.println("Dropped");
return super.importData(comp, t);
}
}
}
关于java - 整个 JFrame 上的 TransferHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32510031/
我正在尝试将 JPanel 编码为在其上绘制图形的空间。为此,我将布局设置为 null mainPanel.setLayout(null); 然后,我在主面板中插入了一些按钮,以尝试实现拖放功能。 b
我正在尝试制作简单的 Java 应用程序以将图像拖放到 JFrame 上的 JLabel 中,但没有成功。稍后我将在我的程序中使用此功能,该程序将接收丢弃的图像、调整其大小然后调整亮度。制作它并保存该
我正在尝试创建一个自定义 TransferHandler,当我粘贴到 JEditorPane 中时,它将删除一些文本。但是当我使用 TransferHandler 设置 JEditorPane 时,复
我想将文本从一个 jlabel move 到另一个,但由于某种原因,只有复制工作而不 move 。我在 handler.exportAsDrag(comp, e, TransferHandler.MO
由于 TransferHandler 属性仅传输 JLabel 的“text”属性。我将如何处理它来制作图像文件?我需要定制一个 TransferHandler 吗? 最佳答案 How would I
我想处理来自其他应用程序的File Drops。现在我可以区分不同的 DataFlavors 并接受正确的类型。 这是我正在使用的源代码: private TransferHandler transf
我为我的 JTree 创建了一个自定义 TransferHandler,因此禁用了复制(仅支持移动)和粘贴(通过检查 canImport 中的 support.isDrop()),但我不知道如何禁用剪
目前我有两个表Table-A, Table-B。我的任务是将行从 Table-A 拖到 Table-B 或将行从 Table-B 拖到它本身。使用 TransferHandler 我已经完成了这个任务
在 Java 中,JTable 默认情况下不提供拖动 JTable 行以对表重新排序的功能。我在网上看到的许多答案都建议您应该使用自定义的 TransferHandler 实现来实现此行为。然而,我发
我有一个小型 Java swingui 应用程序,在其中显示 JList,用户可以剪切、复制、粘贴和排序列表。 我使用自定义 TransferHandler 来允许在此 Jlist 上拖放。这是构建
我正在探索如何实现JTree的Copy和Paste。 因为,我希望从 DefaultMutableTreeNode 复制(例如 toString())粘贴到另一个应用程序(例如 Sublime Tex
我需要摆脱用于 JTree 的 TransferHandler 类的标准键盘操作处理程序。JTree 实现了控制节点是否可以删除的访问级别机制。通过使用键盘组合(如 shift-delete)可以忽略
我正在使用 TransferHandler 将数据从 JPanel 传递到 JTextArea 作为 JLabel(单击左侧面板中的某处以创建要拖动的 JLabel) 数据传输工作正常,但我还想“显示
过去一周我试图解决这个问题,但不知何故我似乎找不到解决方案。关于这个主题的信息并不多,因此很难找到示例或代码来查看。 我这里有一个 JList,它使用自定义 TransferHandler 创建自定义
我的问题是如何知道拖放位置的文本是什么。这是当前的工作代码。 gameCell.addMouseListener(new MouseAdapter() { public v
我正在按照下面提到的教程进行操作。在主题下Extending Default DnD Support本教程的第一个应用程序有一个 JTextArea、一个 JList 和一个 JTable。 而且效果
我正在尝试将多行(不连续)从 jtable 拖动到 jtree。我正在使用自定义的可传输对象和自定义的传输处理程序。 但是,我在导入数据方法中丢失了对象,因为它在类 DropTargetContext
我已将自定义 TransferHandler 添加到我的 JList 中,以覆盖某些功能。 具体来说,我想设置自定义 DataFlavor 以便禁用拖动到 ComboBox 和文本字段中。 fileL
我在为使用自定义 TreeModel 的 JTree 实现自定义 TransferHandler 时遇到问题。问题来自于我用来管理数据的特定 TreeModel。 据我了解,在 swing 中拖放的工
我正在为 JList 组件提供拖放支持,我希望能够支持从我的文件浏览器中拖入的文件。然而,我只想允许文件而不是文件夹被拖入。因此我试图在我的 TransferHandler 中检查它,如下所示: @O
我是一名优秀的程序员,十分优秀!