当前位置: 首页 > 知识库问答 >
问题:

JPanel中的Java自定义拖放

柯曜文
2023-03-14

Java自定义拖放--对TransferHandler没有回调。

我想为JPanel子类实现自定义拖放功能。I遵循标准DnD教程的指导方针:

拖放和数据传输

从表面上看,事情似乎很进步,但当我实际尝试时,我没有得到任何迹象表明任何DnD行为正在发生。事实上,没有调用我的TransferHandler中的任何方法。

所以,让我们回顾一下我所做的...

我创建了自己的容器类,它声明自己来扩展JPanel:

public class DnDUnitPanel extends JPanel
{
    ...
}

我从以下演示中复制了ListTransferHandler:

Drop演示

将类重命名为DndUnitTransferHandler,裁剪了引用JList对象的代码,并在其中的5个方法中的每个方法上安装了System.out.println()状态。

然后我实例化两个不同的DnDUnitPanel实例,如下所示:

DnDUnitPanel topPanel = new DnDUnitPanel(new GridLayout(0, 4, 6, 6), true);
// topPanel.setDragEnabled(true);
topPanel.setName("Top Panel");
topPanel.setTransferHandler(new DnDUnitTransferHandler());

DnDUnitPanel bottomPanel = new DnDUnitPanel(new GridLayout(0, 4, 6, 6), true);
// bottomPanel.setDragEnabled(true);
bottomPanel.setName("Bottom Panel");
bottomPanel.setTransferHandler(new DnDUnitTransferHandler());

当我试图将JLabel从一个面板拖到另一个面板时,什么也不会发生。所以我回去重读了这一页:

转移处理程序

特别是关于setDragEnabled()的内容:

turns on drag support. (The default is false.) This method is
defined on each component that supports the drag gesture; the link
takes you to the documentation for JList.

我对下一步该尝试什么束手无策。

有人看到这里少了什么吗?

共有1个答案

东门楚
2023-03-14

基本上您需要一个数据源。

看看另一个Stackoverflow问题,这里和这里(DnD的一个很好的解释)

 类似资料:
  • 但是,我的程序稍后尝试将一个新的JPanel添加到类的扩展JPanel中,方法是: 这个新的JPanel以正确的BorderLayout格式显示内容,但是JPanel本身将保持在扩展JPanel的顶部中心,我知道这是因为默认布局设置为FlowLayout,但是将其设置为BorderLayout只会导致面板占用整个屏幕。将布局设置为null将完全破坏框架,除了框架的最小化和关闭按钮之外,什么也没有出

  • 本文向大家介绍JAVA GUI自定义JPanel画板背景,包括了JAVA GUI自定义JPanel画板背景的使用技巧和注意事项,需要的朋友参考一下 自定义JPanel面板背景 一、前言 1.GUI全称是Graphical User Interface,就是图形用户界面。JAVA的GUI应用广泛在我们生活中也很常见。很多应用使用该GUI编程设计,像点击QQ图标弹出对应的登录窗体。 一般程序与用户的交

  • 问题内容: 我有一个自定义的JPanel,有时在我的整个程序中,我需要调用一个将屏幕涂成黑色的方法,仅此而已。 启动程序时,我将调用此方法。 但是,我发现有时它起作用,有时却不起作用。这很奇怪。我还发现,当它不起作用时,图形对象不是null,并且宽度和高度也已正确定义(来自getWidth()和getHeight())。 为什么这有时行得通,有时却行不通? 在程序中的某个时候在JPanel上制作自

  • 问题内容: 与使用Netbeans Drag n Drop编辑器相比,手动编码Java Swing GUI有什么优势?也许在运行时?在我看来,编辑器会自动创建很多额外的代码,但是我不知道这是否会对加载视图的运行时间产生很大影响。我当前使用编辑器的唯一原因是因为它使GUI的构建变得快速而简单。但是,是否有只能通过编辑器手动编码才能完成的操作? 还有更好的GUI框架吗?我偷看过Java FX,但我确实

  • 我正在使用GraphStream库。目前,当我运行我的程序时,它会为我的图形打开新窗口并为我的图形打开单独的窗口。我尝试创建一个并将添加到中,之后我尝试将图形添加到我的中,但它说图形对象不是组件。 这是我的代码: 此程序为和图形打开单独的窗口。我想将我的图形显示在我的或。你知道怎么做吗?我看过这个链接,但它不能很好地解释我。

  • 我似乎无法为JPanel设置按钮的自定义位置。它总是在左上角添加按钮,然后继续向右。我还有一个背景图像,这让事情变得更加困难。框架如下所示:imageshack.com/a/img838/3240/ez6l.png我的代码是: 我想将按钮“MusicButton”添加到右下角/中间/或左侧。如果您可以在JPanel中定制JButton,请分享。谢谢