当前位置: 首页 > 面试题库 >

Java拖放的JLabel鼠标事件

丁曦
2023-03-14
问题内容

我想通过覆盖JLabel上的鼠标事件来启用JLabel上的拖放功能,但是当我在mousePressed事件中定义拖放时,mouseReleased对该JLabel无效。难道我做错了什么 ?

            Thumbnails[I_Loop].setText("1");
            Thumbnails[I_Loop].setTransferHandler(new TransferHandler("text"));
            Thumbnails[I_Loop].addMouseListener( new MouseAdapter() {
                public void  mouseReleased(MouseEvent me) {
                       System.out.println("here mouse released");
                  }
                public void mousePressed(MouseEvent me) {
                    System.out.println("here mouse pressed");
                    JComponent comp = (JComponent) me.getSource();
                    TransferHandler handler = comp.getTransferHandler();
                    handler.exportAsDrag(comp, me, TransferHandler.COPY);
            });

*缩略图是JLabel的数组

运行该程序时,拖放有效,但不会打印“此处释放鼠标”语句。但是,当我从mousePressed()方法中删除负责DND的代码时,将打印“此处释放了鼠标”。

这段代码有什么问题?


问题答案:

好吧,如果我没记错的话,拖放机制会捕获所有鼠标事件并自行处理它们。因此,不再抛出普通的MouseEvent。你需要DropTargetListener在JLabel的上注册一个DropTarget



 类似资料:
  • 拖放(Drag’n’Drop)是一个很赞的界面解决方案。取某件东西并将其拖放是执行许多东西的一种简单明了的方式,从复制和移动文档(如在文件管理器中)到订购(将物品放入购物车)。 在现代 HTML 标准中有一个 关于拖放的部分,其中包含了例如 dragstart 和 dragend 等特殊事件。 这些事件使我们能够支持特殊类型的拖放,例如处理从 OS 文件管理器中拖动文件,并将其拖放到浏览器窗口中。

  • 本文向大家介绍Java实现鼠标拖放功能的方法,包括了Java实现鼠标拖放功能的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java利用鼠标的拖放来实现交换程序数据的方法,即所谓的鼠标拖放功能。鼠标的拖放功能在图形化系统中非常常用,Java 提供了java.awt.dnd 和java.awt.datatransfer 包来支持该功能。本例演示如何在程序中实现拖放的实现方法,当在窗口上

  • 问题内容: 我正在使用TransferHandler将数据从JPanel作为JLabel传递到JTextArea (单击左侧面板中的某处以创建要拖动的JLabel) 数据的传输工作正常,但是我还想“显示” JLabel,因为 它与鼠标指针一起被拖动。 如果您注释掉 您将看到我想要它的外观。(但当然不会传输数据)。 如何既可以进行传输又可以使JLabel跟随鼠标光标? 这是代码: 问题答案: 另一个

  • 我尝试了几乎所有的方法,但是鼠标拖动事件没有触发,就像这里解释的那样: https://openjfx.io/javadoc/11/javafx.graphics/javafx/scene/input/MouseDragEvent.html 下面是一个简单的示例,您可以尝试一下(我在JavaFX11.0.2中使用Java11): 我想通过在或中获取的引用。有许多嵌套窗格等,因为我想保持原来的项目布

  • 我在拖放标签时遇到了问题。我无法拖动标签并将其放到另一个标签上。检测到事件setOnDragDetected,但未检测到setOnDrugDropped。这些是文件。 FXML: 控制器: 公共类HomeController实现可初始化{ }

  • 我有一个带有多个选项卡的选项卡。我想通过在特定位置拖动选项卡来重新定位选项卡(就像我们能够在浏览器中排列选项卡一样。有什么办法可以实现它吗?