你们都知道Mac OS X中的菜单栏(或更好的NSStatusBar).
我可以移动一些项目,而其他项目则不行.
我希望能够拖动我的应用程序的NSStatusItem.
知道如何实现这个吗?
我有一个注册拖动操作的NSView.
在该视图中,我有一个子类NSScrollView,它本身有一个NSImageView.
当拖动到原始的NSView上时,一切都很好,除了当我拖动前面提到的NSImageView时,它似乎插入了拖动并且我不能掉到它上面(或者实际上是它下面的视图.
NSScrollView似乎忽略了拖动并允许它进入底层NSView,但是我如何为NSImageView执行此操作以便拖放注册自身,它的superview(NSScrollView)和底层NSView.
我想将放置区背景颜色更改为绿色或红色,具体取决于所包含的有效负载拖动是否包含支持的文件类型(JPEG).
Gecko和Webkit是否支持确定拖放文件的文件类型?
如何在这两个浏览器中提取文件类型?
我找到了event.dataTransfer.types API,但对于Firefox来说,它似乎填充了application/x-moz-file,因此我觉得我做错了.
是否有可能从网页中的SVG元素接收拖放事件?
我尝试了Google Closure库,但无济于事.
具体来说,假设我的页面包含
<ul id = "list">
<li class="item" id="item1">foo</li>
<li class="item">bar</li>
<li class="item">baz</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我的脚本包含(Clojurescript/C2)
(let [items (select-all ".item")
lst (select "#list")
target (fx/DragDrop. lst nil)]
(dorun (map
(fn [item]
(let [source (fx/DragDrop. item nil)]
(. source (addTarget target))
(. source (init))))
items))
(. target (init)))
Run Code Online (Sandbox Code Playgroud)
然后,我做得到拖动图像(鬼),虽然我不设法接收例如通过做拖动事件
(on-raw "#item1" :dragstart (fn [e] (.log js/console (str "dragstart " e))))
Run Code Online (Sandbox Code Playgroud)
使用类似的SVG元素代码,我甚至没有鬼......
任何提示?
谢谢
以下代码:
<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
#div1 {width:350px;height:70px;padding:10px;border:1px solid #aaaaaa;}
</style>
<script>
function allowDrop(ev)
{
console.log(ev.dataTransfer.getData("Text"));
ev.preventDefault();
}
function drag(ev)
{
ev.dataTransfer.setData("Text",ev.target.id);
}
function drop(ev)
{
ev.preventDefault();
var data=ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>
<p>Drag the W3Schools image into the rectangle:</p>
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<br>
<img id="drag1" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
使用Firefox正确获取dataTransfer对象并在执行event 调用drag1的allowDrop函数时返回图像的id()ondragover,但在Chrome中getData返回一个空字符串.这是一个错误还是Chrome只返回活动的有效dataTransfer对象ondrop?
我遇到了有关使用拖放重新排序JList中的元素的问题.以下代码是对代码的修改,您可以将元素从一个JList拖动到另一个JList(仅以一种方式工作).我试图让它只用于一个JList,但是元素甚至不能被拖出列表.所以我想这不可能这样做.我有什么不对的想法?
我的想法是让它为带有缩略图的Jlist工作,但因为我甚至无法让它只用于字符串...我一直在研究几个D'n'D教程,但我仍然不能让它工作.任何帮助表示赞赏.
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.datatransfer.*;
import java.io.IOException;
public class DragAndDrop extends JFrame {
DefaultListModel<String> transport = new DefaultListModel<String>();
JList<String> transportList = new JList<String>(transport);
public DragAndDrop() {
setLayout(new FlowLayout());
transport.addElement("Bike");
transport.addElement("Car");
transport.addElement("Truck");
transport.addElement("Boat");
JScrollPane transportScroll = new JScrollPane(transportList);
transportScroll.setBorder(new TitledBorder("Transportation"));
add(transportScroll);
transportList.setDragEnabled(true);
transportList.setTransferHandler(new TransferHandler() {
int index;
@Override
public int getSourceActions(JComponent comp) {
return COPY_OR_MOVE;
}
@Override
public Transferable createTransferable(JComponent comp) {
index = transportList.getSelectedIndex();
return new StringSelection(transportList.getSelectedValue());
}
@Override
public void exportDone( JComponent comp, Transferable …Run Code Online (Sandbox Code Playgroud) 我有一个Recyclerview,允许在编辑模式下拖放项目.一旦用户退出编辑模式,我需要禁用拖放功能.
我试过改变ItemTouchCallback中的东西,包括移动标志和isLongPressDragEnabled无济于事.长按继续开始拖动事件.
我目前的解决方案是分离并重新连接片段,然后再次进入编辑模式时添加回调,但是我希望有一些更清洁的东西,我想念.
打回来:
public class ItemTouchCallback extends ItemTouchHelper.Callback {
private final ItemTouchHelperAdapter mAdapter;
public ItemTouchCallback(ItemTouchHelperAdapter mAdapter) {
this.mAdapter = mAdapter;
}
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
int dragFlags = ItemTouchHelper.START | ItemTouchHelper.END |ItemTouchHelper.DOWN | ItemTouchHelper.UP;
return makeMovementFlags(dragFlags, 0);
}
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
mAdapter.onItemMove(viewHolder.getAdapterPosition(), target.getAdapterPosition());
return true;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
}
@Override
public boolean isLongPressDragEnabled() {
return true;
}
@Override
public boolean isItemViewSwipeEnabled() { …Run Code Online (Sandbox Code Playgroud) 我的问题的关键在于我需要异步使用datatransferitemlist,这与规范中描述的功能不一致,即事件结束后您将被锁定在dataTransfer.items集合之外.
https://bugs.chromium.org/p/chromium/issues/detail?id=137231 http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#drag-data -商店
案件罪犯如下.更详细地描述了我的问题和下面的想法.
drophandler: function(event) {
event.stopPropagation();
event.preventDefault();
event.dataTransfer.dropEffect = 'copy';
zip.workerScriptsPath = "../bower_components/zip.js/WebContent/";
zip.useWebWorkers = false; // Disabled because it just makes life more complicated
// Check if files contains just a zip
if (event.dataTransfer.files[0].name.match(/(?:\.([^.]+))?$/) == 'zip') {
var reader = new FileReader();
that = this;
reader.onload = function(e) {
that.fire('zipuploaded', e.target.result.split(',')[1]);
}
reader.readAsDataURL(event.dataTransfer.files[0]);
// Rev up that in browser zipping
} else {
var that = this;
var items = event.dataTransfer.items;
// Async operation, execution falls …Run Code Online (Sandbox Code Playgroud) 我按功能创建新的Object,我创建了sortable要使用的方法,但是在回调函数上有错误
;"use strict";
(function(){
function libJS(){};
libJS.prototype = {
loopElement : function(element, options, callback){
var libObj = this;
var goesCallback = function(element, options, callback){
if (!!callback && libObj.isFunction(callback)) callback(element, options);
};
if (libObj.isElement(element)) goesCallback(element, options, callback);
else if (libObj.isString(element) && /^(\.|\#)[\w\d\-_]+$/g.test(element)){
if (/^\./g.test(element)){
element = document.getElementsByClassName(element.replace('.', ''));
var length = element.length || 0, i;
for(i = 0; i < length; i++) goesCallback(element[i], options, callback);
}else{
element = document.getElementById(element.replace('#', ''));
if (!!element) goesCallback(element, options, callback);
}
}
},
isElement …Run Code Online (Sandbox Code Playgroud)我正在创建一个图像编辑应用程序.在其中我提供设施打开相机或画廊来选择图片.在选择图片时,用户将导航到其他页面.在其他页面显示图片我正在使用一个实现的视图AppCompactImageView.现在,我正在通过使用edittext添加文本.单击软键盘的"完成"按钮,edittext将消失,将被替换为TextView.现在我想在整个布局中拖动这个TextView.但经过下降操作后,它就会消失.以下是我的代码.任何帮助都会很明显.
DrawActivity.java
public class DrawActivity extends AppCompatActivity {
DrawView imgView;
Button resetBtn, saveBtn;
ImageButton undoBtn;
Bundle extras;
Context context;
EditText addTxtBox;
ImageView brushImg, fontImg;
TextView addedTxtView;
// LinearLayout mainLinear;
RelativeLayout mainRelative;
public int rowX, rowY;
public String txtVal;
private android.widget.RelativeLayout.LayoutParams layoutParams;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide();
setContentView(R.layout.activity_draw);
context = this.getApplicationContext();
mainRelative = (RelativeLayout) findViewById(R.id.relativeLayout1);
imgView = (DrawView) findViewById(R.id.frag_home_iv_main);
resetBtn = (Button) findViewById(R.id.clearBtn);
undoBtn = (ImageButton) findViewById(R.id.undoBtn);
saveBtn = (Button) findViewById(R.id.saveBtn);
addTxtBox = (EditText) …Run Code Online (Sandbox Code Playgroud)drag-and-drop ×10
html5 ×3
javascript ×3
android ×2
cocoa ×2
asynchronous ×1
callback ×1
java ×1
java-7 ×1
jlist ×1
nsstatusbar ×1
nsview ×1
objective-c ×1
svg ×1
swing ×1
textview ×1
zip.js ×1