Java 如何区分导入数据中的复制/移动
我需要在拖放或复制/剪切和粘贴复制与移动期间获得动作类型。它是一个Swing应用程序,并且实现了TransferHandle。我需要在操作结束时在importData方法中提供此信息 对于拖放,似乎可以测试getUserDropAction,如下所示 @凌驾 公共布尔输入数据最终传输支持{ ifsupport.isDrop&&support.getUserDropAction==TransferHandler.MOVE{ //拖放、移动 } }Java 如何区分导入数据中的复制/移动,java,swing,drag-and-drop,Java,Swing,Drag And Drop,我需要在拖放或复制/剪切和粘贴复制与移动期间获得动作类型。它是一个Swing应用程序,并且实现了TransferHandle。我需要在操作结束时在importData方法中提供此信息 对于拖放,似乎可以测试getUserDropAction,如下所示 @凌驾 公共布尔输入数据最终传输支持{ ifsupport.isDrop&&support.getUserDropAction==TransferHandler.MOVE{ //拖放、移动 } } …但是如何获取剪切/复制和粘贴的信息?或者有更好的
…但是如何获取剪切/复制和粘贴的信息?或者有更好的通用方法吗?也许您可以从Swing教程中获得足够的提示,其中包含一个工作示例: 可以通过TransferSupportisDrop方法确定是拖放还是复制/剪切和粘贴 使用该方法的int action参数确定它是复制粘贴还是剪切粘贴 由于粘贴是使用TransferHandlerimportData执行的。。。方法,重写TransferHandlerexportDone。。。方法,如果参数的操作是TransferHandler.MOVE,则剪切传输源数据 如果操作不是TransferHandler.MOVE,则无需执行任何操作,因为它是一个副本
/**
* When the export is complete, remove the old list entry if the
* action was a move.
*/
protected void exportDone(JComponent c, Transferable data, int action) {
if (action != MOVE) {
return;
}
JList list = (JList)c;
DefaultListModel model = (DefaultListModel)list.getModel();
int index = list.getSelectedIndex();
model.remove(index);
}
您的解决方案用于区分键盘动作剪切或复制与鼠标动作移动和复制。但我需要一些不同的东西,正如我在主题:移动与复制中所写的。并且不是在exportDone中,而是在importData中,由于某些服务器通信。
/**
* When the export is complete, remove the old list entry if the
* action was a move.
*/
protected void exportDone(JComponent c, Transferable data, int action) {
if (action != MOVE) {
return;
}
JList list = (JList)c;
DefaultListModel model = (DefaultListModel)list.getModel();
int index = list.getSelectedIndex();
model.remove(index);
}