【问题标题】:Navigate from one Container to another in Codename One在 Codename One 中从一个容器导航到另一个容器
【发布时间】:2014-06-04 01:35:21
【问题描述】:

我有一个带有 4 个容器(选项卡)的主窗体。在第一个容器(MessagesContainer)上,我有 MultiButtons。当我单击 MultiButton 时,我想导航到另一个容器 (DetailContainer)。而且我还希望来自被按下的 MultiButton 的信息在 DetailContainer 中可用。

这是我的多功能按钮:

  MultiButton mb = new MultiButton();
  mb.setTextLine1(messageContent);
  mb.setTextLine2(messageDate);
  mb.setName(messageId + "--MB");
  mb.setCheckBox(true);
  mb.setIcon(img);

  Command navigateToDetail = new Command("Detail") {
     public void actionPerformed(ActionEvent ev) {
        System.out.println("Get here!");

       //showContainer("DetailContainer", null, null);

       Component detailContainer = findDetailContainer(f);
       reloadContainer(detailContainer);

  }
};

 mb.setCommand(navigateToDetail);
 findMessagesContainer(f).addComponent(mb);

我尝试过 showContainer, f.show() 但它不起作用。我不明白为什么像导航这样愚蠢的东西在这里如此痛苦?

如何显示 DetailContainer 并将被点击的 MultiButton 值发送到 DetailContainer?

【问题讨论】:

    标签: navigation containers codenameone


    【解决方案1】:

    如果您只想切换到另一个选项卡,请在选项卡组件上使用setSelectedIndex()

    但是,如果我正确理解了您的问题,您想要更深入地导航,这应该与 showContainer 一起使用,但是您需要使用 EmbeddedContainer。通常当使用Form 导航时,功能非常简单,我们会替换整个 UI。但是,当您想使用选项卡导航时,我们无法知道您要替换哪个部分。因此,您需要使用EmbeddedContainer 并在其中引用另一个通过 GUI 构建器创建的容器(不是表单)。然后,您可以调用 showContainer() 并在 EmbeddedContainer 层次结构中给它一个组件,这样我们就有一个“根”来找到正确的父级(假设 4 个选项卡你可以有 4 个 EmbeddedContainer,所以我们需要知道哪一个...)。

    您可以避免所有这些并使用Container.replace(),这实际上是我们内部所做的,但是您将无法从 GUI 构建器中获得“自动”导航。

    这不是微不足道的,但我们花费了大量时间思考如何简化它并仍然提供相同的功能集,但结果却是空的。

    【讨论】:

    • 我找到了一种使用 setSelectedIndex() 的方法,然后使用属性值将我的按钮值传递给下一个容器。感谢您的回答!
    • 不知道他们有没有Container.replace()方法的例子
    • 在javadoc、博客和教程中有很多container.replace的例子。你想达到什么目的?请注意,这个旧问题与嵌入式容器有关,它是旧的/已弃用的 GUI 构建器的一个功能
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    相关资源
    最近更新 更多