我试图了解如何最好地将文件从Finder拖放到NSTableView,随后将列出这些文件.
我已经建立了一个小测试应用程序作为试验场.
目前,我有一个NSTableView与FileListController它的datasourse.它基本上是一个NSMutableArray File对象.
我正在尝试找出最佳/正确的方法来实现NSTableView的拖放代码.
我的第一种方法是继承NSTableView并实现所需的方法:
TableViewDropper.h
#import <Cocoa/Cocoa.h>
@interface TableViewDropper : NSTableView
@end
Run Code Online (Sandbox Code Playgroud)
TableViewDropper.m
#import "TableViewDropper.h"
@implementation TableViewDropper {
BOOL highlight;
}
- (id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
// Initialization code here.
NSLog(@"init in initWithCoder in TableViewDropper.h");
[self registerForDraggedTypes:@[NSFilenamesPboardType]];
}
return self;
}
- (BOOL)performDragOperation:(id < NSDraggingInfo >)sender {
NSLog(@"performDragOperation in TableViewDropper.h");
return YES;
}
- (BOOL)prepareForDragOperation:(id)sender {
NSLog(@"prepareForDragOperation called in TableViewDropper.h");
NSPasteboard *pboard = [sender draggingPasteboard]; …Run Code Online (Sandbox Code Playgroud) 我想将我的表的数据从一个表交换到另一个表中的同一列(注意:我只有两列).
我的问题是我无法交换价值.此外,我希望仅在同一列上启用交换,否则,表值将重置为其原始值.
这是我的代码:
JTable table_1 = new JTable(model);
table_1.setPreferredScrollableViewportSize(new Dimension(300, 120));
table_1.setDragEnabled(true);
table_1.setDropMode(DropMode.USE_SELECTION);
table_1.setTransferHandler(new TransferHelper());
table_1.setRowSelectionAllowed(false);
table_1.setCellSelectionEnabled(true);
Run Code Online (Sandbox Code Playgroud)
我的TransferHelper类:
class TransferHelper extends TransferHandler {
private static final long serialVersionUID = 1L;
public TransferHelper() {
}
@Override
public int getSourceActions(JComponent c) {
return MOVE;
}
@Override
protected Transferable createTransferable(JComponent source) {
String data = (String) ((JTable) source).getModel().getValueAt(((JTable) source).getSelectedRow(), ((JTable) source).getSelectedColumn());
return new StringSelection(data);
}
@Override
protected void exportDone(JComponent source, Transferable data, int action) {
((JTable) source).getModel().setValueAt("", ((JTable) source).getSelectedRow(), ((JTable) source).getSelectedColumn());
}
@Override …Run Code Online (Sandbox Code Playgroud) 我正在尝试在WPF应用程序中为从zip存档中拖动的文件实现处理程序。处理程序应获取文件内容以进行进一步处理。
我的环境:Windows7,已安装7-zip,Visual Studio 2012 Express,.Net 4.5
这是一个简单的MainWindow应用程序的代码来演示该问题:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
AllowDrop= true;
Drop += onDrop;
}
private void onDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent("FileContents"))
{
var fileContents = e.Data.GetData("FileContents");
//get file contents...
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我将zip存档中包含的文件拖到我的Window时,对e.Data.GetData(“ FileContents”)的调用将引发System.ArgumentException(“ Argument out of Range”),并带有以下调用堆栈:
System.Windows.DataObject.OleConverter.GetDataInner(formatetc, medium)
System.Windows.DataObject.OleConverter.GetDataFromOleHGLOBAL(format, aspect, index)
System.Windows.DataObject.OleConverter.GetDataFromBoundOleDataObject(format, aspect, index)
System.Windows.DataObject.OleConverter.GetData(format, autoConvert, aspect, index)
System.Windows.DataObject.OleConverter.GetData(format, autoConvert)
System.Windows.DataObject.GetData(format, autoConvert)
System.Windows.DataObject.GetData(format)
TestZip.MainWindow.onDrop(sender, e) Zeile 34 C#
Run Code Online (Sandbox Code Playgroud)
我已经查看了此OleConverter的源代码(http://reflector.webtropy.com/default.aspx/Dotnetfx_Win7_3@5@1/Dotnetfx_Win7_3@5@1/3@5@1/DEVDIV/depot/DevDiv/发布/ Orcas / NetFXw7 / wpf / …
在此JTabbedPane屏幕截图中

我正在使用Netbeans的DnD,并且一直在修改它,只是在选项卡之间放置空格。到目前为止,我仍然无法获得想要的东西。
有办法吗?
我使用Qt用C++编写,我有一个列表小部件.
我启用了内部拖放功能,使用:
list->setDragDropMode(QAbstractItemView::InternalMove);
Run Code Online (Sandbox Code Playgroud)
我应该怎么做才能捕捉到这样一个拖放动作完成的信号?
谢谢!
对不起; 我不喜欢问"我为什么会这样exception?" 关于StackOverflow的问题(现在我想起来有点讽刺......),但我无法弄清楚这个异常的原因!我已经搜索了一个解决方案,但是那些弹出的是要么是一个微妙的异常,当人们试图访问Transferrable事件处理程序的外部,或者根本没有回答.
我正试图在DropTargetListener#drop(DropTargetListener)方法中做到这一点.我正在通过从运行程序的同一驱动器中拖动PNG来测试这一点,这让我觉得数据随时可用.我的相关代码和结果异常如下:
(为简洁起见,缩短了注释中的行号,=>如果是错误行,则后跟其中)
// package declaration
// imports
/*45 */ public class BHFileChooser extends JComponent implements DropTargetListener
/*46 */ {
// object declaration
...
// initialization methods
...
/*186*/ @Override
/*187*/ public void dragEnter(DropTargetDragEvent dtde)
/*188*/ {
/*189*/ setState(State.EVALUATING);
/*190*/ setState(canAccept(dtde.getTransferable()) ? State.EVALUATED_ACCEPTABLE : State.EVALUATED_UNACCEPTABLE);
/*191*/ validate();
/*192*/ }
/*193*/
/*194*/ @Override
/*195*/ public void dragExit(DropTargetEvent dte)
/*196*/ {
/*197*/ setState(State.WAITING); …Run Code Online (Sandbox Code Playgroud) 我需要一点帮助.我需要一个蓝色圆圈,一个红色圆圈,一个蓝色方块和一个红色方块.我需要将红色圆圈拖到红色正方形的中心,将蓝色圆圈拖到蓝色正方形的中心.除非我将其拖动到正确的位置,否则它应该恢复到原始位置.
这是我到目前为止:
$("#draggable, #draggable2").draggable({
revert: 'invalid', snap: "#droppable2"
});
$("#droppable").droppable({
accept: '#draggable'
});
$("#droppable2").droppable({
accept: '#draggable2',
});
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/tM7cp/269/
我无法将圆圈定位到正方形的中心,我该怎么做?
我正在使用Jquery进行拖放。
我要制作要拖动的项目的简短JavaScript是:
$(".draggable").draggable();
Run Code Online (Sandbox Code Playgroud)
我的简短JavaScript可以拖放区域是:
$("#droppable").droppable();
Run Code Online (Sandbox Code Playgroud)
这是我的可拖动项简短的HTML代码:
<div id="comItem[]" class="computerItem draggable">
<img src="img/com.png" class="assetImg" alt="Computer Info" title="">
<span id="owner[]" class="textLabel"></span>
<span id="ipaddress[]" class="textLabel"></span>
</div>
Run Code Online (Sandbox Code Playgroud)
有人知道如何从可放置区域中的放置项中获取值吗?我要创建放置物品的对象数组吗?
非常感谢。
我需要获得可拖动面板的下降位置.但我无法弄清楚如何做到这一点.我试图获得这种风格,但我得到了无关的信息.
这是我的xhtml:
<h:form id="dnd">
<p:panel id="draggable1"
style="z-index:1; width: 60px; height: 60px;">
<h:outputText value="CAM-1" />
<p:draggable for="draggable1"
revert ="false"/>
</p:panel>
<p:panel id="droppable"
style="z-index:1; width: 600px; height: 600px;">
<p:droppable for="droppable">
<p:ajax listener="#{myBean.onDrop}" />
</p:droppable>
</p:panel>
</h:form>
Run Code Online (Sandbox Code Playgroud)
这是我的支持bean:
public void onDrop(DragDropEvent dragDropEvent) {
String dragId = dragDropEvent.getDragId();
UIComponent draggedItem = FacesContext.getCurrentInstance().getViewRoot().findComponent(dragId);
System.out.println(draggedItem.getClientId());
Panel draggedPanel = (Panel) draggedItem;
String style = draggedPanel.getStyle();
System.out.println(style);
String styleClass = draggedPanel.getStyleClass();
System.out.println(styleClass);
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.提前致谢.
我一直在寻找使用Java进行拖放的示例,但是他们总是使用附加框的通用鼠标光标来指示正在拖动项目,而许多工具(甚至像Firefox这样的浏览器)会将拖动对象的重影附加到光标指示正在拖动的内容.可以在JavaFX中完成吗?
drag-and-drop ×10
java ×4
swing ×3
javascript ×2
jquery ×2
.net ×1
c# ×1
c++ ×1
cocoa ×1
css ×1
exception ×1
html ×1
javafx-8 ×1
jquery-ui ×1
jsf ×1
jtabbedpane ×1
netbeans ×1
objective-c ×1
primefaces ×1
qt ×1
wpf ×1
zip ×1