Tag: 拖放

SWT拖动到资源管理器(Windows)或Finder(OS X)

我有一个带有一堆图形元素的SWT应用程序。 我希望用户能够将元素拖到他们的桌面/ Windows资源管理器/ OS X Finder中。 当他们删除元素时,我需要将它们放到的路径,以便我可以在该位置创建一个表示该元素的文件。 我不认为我可以使用FileTransfer ,因为没有源文件。 有一个源对象可以创建一个文件,但只有一旦它知道放在哪里。 下面内联是我想要实现的一个简单示例,有一个带有标签的文本框可以拖动。 如果用户拖动到某个文件夹或文件,我想获取他们拖动的路径。 如果他们拖动到一个文件,我想用文本框中的任何内容替换该文件的内容。 如果他们拖动到一个文件夹,我想创建一个名为“TestFile”的文件,其中包含文本框中的内容。 import org.eclipse.swt.SWT; import org.eclipse.swt.dnd.*; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*; public class DesktopDragExample { public static void main(String[] args) { // put together the SWT main loop final Display display = Display.getDefault(); display.syncExec(new Runnable() { @Override public void run() { Shell shell = […]

Java拖放自定义光标

我已经使用JPanel定义了一个自定义canvas样式组件,它将支持将对象拖动到canvas上。 我似乎无法弄清楚如何使用TransferHandler将拖放(DnD)光标更改为自定义光标。 例如,代替DnD期间的默认链接光标,我想替换我自己的。 有没有办法使用TransferHandler来做到这一点? 我怀疑我将不得不使用AWT DnD支持来做到这一点,但我希望尽可能避免这种情况。

Java拖放OS X报告移动而不是复制

更新/状态:错误报告给Oracle,目前仍处于打开/未解决状态: https : //bugs.openjdk.java.net/browse/JDK-8054325 我发现了一个奇怪的错误,它只能在OS X上的Java 7和8上显示,而不是在Java 6中,在Java 7 Windows上都没有。 下面是提取的bug尽可能多地删除不需要的代码。 它给我们留下了一个小桌子和一个按钮,我们可以从按钮顶部的桌子上拖动单元格。 在我们的生产代码中,我们使用的是带有COPY_OR_MOVE作为源操作的TransferHandler 。 我们有两个目标,一个DropTarget接受为MOVE ,另一个接受为COPY 。 似乎在OS X上JDK / JRE被破坏了,因为如果DropTarget接受为COPY它在TranferHandler报告的是MOVE 。 如果我们在Java 6(或Windows上的Java 7)上执行下面的代码,它会报告( 按预期 ): not move is copy 但是当我们在OS X Java 7或Java 8上执行它时,我们得到以下结果: is move not copy 我已经测试并向Oracle报告了这个问题(错误报告仍在审理中)。 但是,由于这将需要(loooong)同时得到修复,也许这里有人知道如何制作一个“干净”的解决方法? 我宁愿没有链接到原始组件的放置目标告诉它实际操作(复制或移动),这个声音过于复杂。 import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.awt.dnd.DnDConstants; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetAdapter; import java.awt.dnd.DropTargetDropEvent; […]

使用拖放项目制作类似列表的小部件的最简单方法是什么?

我能想到的最简单的例子是播放列表,您可以将歌曲拖动到列表中的其他位置。 我用Swing做了很多事情,但我从来没有见过像这样的例子。

JavaFX OnDragDropped未注册

我试图将标签拖放到彼此之上。 我有一个名为starsAndBars的标签列表,每个标签在创建时都会调用它: private void giveDragAndDropProperties(Label label) { //Enable drag actions to pick up the label label.setOnDragDetected(new EventHandler() { public void handle(MouseEvent event) { System.out.println(“Drag and drop started!”); Dragboard db = label.startDragAndDrop(TransferMode.ANY); ClipboardContent content = new ClipboardContent(); int index = starsAndBars.indexOf(label); content.putString(“test”); db.setContent(content); event.consume(); } }); label.setOnDragEntered(new EventHandler() { public void handle(DragEvent event) { System.out.println(“drag entered!”); […]

是否可以在JFrame中使用JButton,JTextField等“可移动”/“可拖动”组件?

基本上我计划在JFrame上放置一些按钮,文本字段,标签等,我希望用户可以用鼠标在该JFrame上移动不同的组件。 我已经看到了使用MouseListeners,子类化JComponent代码,DropSource / DropTarget实现等的各种方法,但我不确定哪种是“推荐”方式(我不需要支持不同帧/应用程序之间的“拖放”)这是大多数例子似乎做的事情)。

在Eclipse RCP中通过拖放在视图之间传输项目?

我的应用程序中有2个视图。 在其中一个视图中,我可以看到包含自定义元素的TreeStructure(例如MDocument,MVersion ……)。 我希望能够将MVersion类型的项目从我的视图拖到另一个但我不知道如何声明传输类型或检查所选项目是否是受支持的类型。 有任何想法吗?

Wicket用于添加图像的拖放function

我正在制作一个wicket应用程序,可以管理cashdesk应用程序的一些选项。 其中一个选项是更改selected 产品的图像。 当选择此选项时,用户(管理员)可以从数据库中已存在的图像(SQL)中进行选择,或者如果不存在所需图像,则添加新图像。 不要提到测试名称和令人敬畏的图像(它仍然在测试 – fase) 我更喜欢通过拖放html5演示添加图像[dnd-upload] (从桌面进入浏览器) 我目前正在使用Wicket-6.2.0和wicket-dnd 0.5.0 ,我似乎无法让这个工作! 我能找到的所有例子都来自wicket 2.x或更低。 可以在Wicket-6.2中使用拖放function,但我该如何实现呢? 在wicket中似乎有一些DraggableBehavior ? 欢迎任何帮助! [UPDATE] 升级到wicket-dnd 0.6

如何在DragAndDrop期间在Main-JTable上绘制RowHeader-JTable的Dropline?

我在JScrollPane的Viewport中使用第二个JTable来为主表构建RowHeader。 主表上的DragAndDrop已禁用。 在rowheader表上启用DnD。 如果用户启动了rowheader上的Drag,我想在主表上扩展绘制的rowheader下划线(图像中的黑线)(如图中的绿线)。 有人对我有建议吗? 这是SSCCE: import java.awt.Component; import java.awt.EventQueue; import java.awt.Font; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.DropMode; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JViewport; import javax.swing.TransferHandler; import javax.swing.UIManager; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.JTableHeader; import javax.swing.table.TableColumn; public class DNDLinePainterExampleMain extends JFrame { public […]

测试拖放文件到应用程序

我正在寻找一种方法,通过unit testing将文件/多个文件拖放到我的应用程序中。 例如,在Windows资源管理器中选择一些文件,将它们拖放到我的应用程序中。 我能够在我的应用程序中测试两个组件之间的拖放行为(见下文 – 随意指出你是否知道更好的方法),但我不知道如何在数据必须来自时做同样的事情在我的申请之外。 当我手动执行拖放操作时,我想过使用调试器检查’文件’ Transferable ,但必须有一个更好的方法然后硬编码完整的Transferable 。 组件之间的拖放测试示例 import org.junit.Test; import javax.swing.Action; import javax.swing.JTextField; import javax.swing.TransferHandler; import java.awt.event.ActionEvent; import static org.junit.Assert.assertEquals; public class DragAndDropTest { @Test public void dragAndDropBetweenTwoTextFields() { JTextField firstField = new JTextField(); JTextField secondField = new JTextField(); String testText = “Test text”; firstField.setText( testText ); firstField.selectAll(); Action copyAction = […]