JAR*_*ARC 5 java drag-and-drop java-5
问题是关于Java 5和Drag n Drop.
有没有办法确定放置目标中的拖动源组件TransferHandler?
我需要在我canImport(..)或importData(..)方法中知道这一点,以便为相同类型的传输数据采取不同的操作DataFlavor.
我目前实现这一目标的方法是劫持DataFlavor"人类可读字段"并设置字符串操作,结果如下:
DataFlavor localCopyFooFlavor = new DataFlavor(Foo.class, "COPY");
DataFlavor localEditFooFlavor = new DataFlavor(Foo.class, "EDIT");
Run Code Online (Sandbox Code Playgroud)
然后使用此字段来决定要采取的操作.我很确定这是错的.
谢谢.
弄清楚了。
关键是为每个放置目标组件创建一个 DataFlavor。所以这里我有 4 个接受 foo 类型的 drop 的目标、3 个按钮和 1 个面板。
fooCopyButtonFlavor = new DataFlavor(FooCopyButtonTransferData.class, "Foo 'Copy Button' Transfer Data");
fooEditButtonFlavor = new DataFlavor(FooEditButtonTransferData.class, "Foo Entry 'Edit Button' Transfer Data");
fooDeleteButtonFlavor = new DataFlavor(FooDeleteButtonTransferData.class, "Foo Entry 'Delete Button' Transfer Data");
fooDialogPanelFlavor = new DataFlavor(FooDialogPanelTransferData.class, "Foo Entry 'Dialog Panel' Transfer Data")
Run Code Online (Sandbox Code Playgroud)
我决定结束我的 Foo 状态课程。
并使这个包装器实现一个我命名为 TransferDataStrategy 的自定义接口。现在这样做可以让我在 importData(...) 函数中针对相同的风格执行不同的操作。
public interface TransferDataStrategy<MODEL>
{
MODEL getModel();
OptionStrategy getOptionStrategy();
}
Run Code Online (Sandbox Code Playgroud)
我的Transferable实现(可以被认为是拖动的源)现在可以DataFlavor通过返回不同的策略来驱动相同(或放置目标组件)的放置时发生的情况。
public class SourceOneTransferOperation implements Transferable
{
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException
{
if (flavor.equals(FooDataFlavor.fooCopyButtonFlavor)) {
TransferDataStrategy<Foo> tds = new FooCopyAAA(model);
return tds;
}
...
}
}
Run Code Online (Sandbox Code Playgroud)
注意下面的源二也支持 FooCopyButtonFlavor,但返回不同的策略。
public class SourceTwoTransferOperation implements Transferable
{
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException
{
if (flavor.equals(FooDataFlavor.fooCopyButtonFlavor)) {
TransferDataStrategy<Foo> tds = new FooCopyBBB(model);
return tds;
}
...
}
}
Run Code Online (Sandbox Code Playgroud)
这很难解释,但希望它能有所帮助。
| 归档时间: |
|
| 查看次数: |
2899 次 |
| 最近记录: |