【问题标题】:ZK MVC Drag and Drop between two ListboxZK MVC 在两个 Listbox 之间拖放
【发布时间】:2017-12-14 12:19:35
【问题描述】:

我在 ZK MVC 控制器中遇到问题。

我想管理 2 个列表框(左右)之间的拖放。

此代码加载右侧的项目:

for(int i=0;i<lstEtic.size();i++) {
        Listitem li = new Listitem();
        System.out.println(lstEtic.get(i));
        addListcell(li,lstEtic.get(i));
        right.appendChild(li);

    }

左侧列表框为空。

问题:谁能给我一个代码示例来管理Java控制器中的拖放事件?

【问题讨论】:

  • 你必须让你的问题更具体。你如何填充你的列表框并不重要。详细了解拖放应该如何工作会更有趣。这里是an example in the official documentation。它甚至可以处理拖动列表项,所以它应该很容易适应你的情况。如果您遇到问题,请更新您的问题。
  • 我需要代码来管理控制器类中的拖放事件。@MalteHartwig
  • 我知道,你已经说过了。我想知道你的具体问题在哪里。该文档很好地表明您需要设置droppabledraggable,并添加一个onDrop 侦听器。你可以在 zul 或 java 中做到这一点。

标签: drag-and-drop zk


【解决方案1】:

这是一个基于documentation I mentioned 的示例。将所有必要的属性设置和 onDrop 侦听器移至 Java 非常容易:

<hlayout width="400px" height="400px" apply="path.to.MyComposer">
    <listbox id="left" hflex="1" vflex="1" />
    <listbox id="right" hflex="1" vflex="1" />
</hlayout>

public class MyComposer
    extends SelectorComposer<Component>
{
    @Wire
    private Listbox left;
    @Wire
    private Listbox right;

    @Override
    public void doAfterCompose(Component comp)
        throws Exception
    {
        super.doAfterCompose(comp);

        for (int i = 0; i < 10; i++)
        {
            Listitem li = new Listitem();
            li.appendChild(new Listcell("Item " + i));
            li.setDraggable("true");
            right.appendChild(li);
        }

        left.setDroppable("true");
        left.addEventListener(Events.ON_DROP,
                              (DropEvent event) -> left.appendChild(event.getDragged()));
    }
}

【讨论】:

  • 谢谢!支持!!
  • 拖放有效,但当我阅读左侧列表框中的 Listitem 时为空白
  • 空白是什么意思?他们身上没有标签吗?还是它们的值为 null?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-03
  • 2013-03-02
  • 1970-01-01
相关资源
最近更新 更多