0

我在 Apache Pivot 应用程序中隐藏一个窗格并显示另一个窗格时遇到问题。在我的 BXML 文件中,我BoxPane在一个窗口中有两个 s。窗格 1 开始可见,窗格 2 开始隐藏:

<BoxPane bxml:id="pane1" orientation="vertical" styles="{horizontalAlignment:'center', verticalAlignment:'center'}">
  <Label text="Pane 1"/>
  <PushButton bxml:id="startButton" buttonData="Start"/>
</BoxPane>

<BoxPane bxml:id="pane2" orientation="vertical" visible="false" styles="{horizontalAlignment:'center', verticalAlignment:'center'}">
  <Label text="Pane 2"/>
</BoxPane>

我在按钮上添加了一个监听器,它应该使窗格 1 隐藏并且窗格 2 可见:

@BXML private PushButton startButton = null;
@BXML private BoxPane pane1 = null;
@BXML private BoxPane pane2 = null;

@Override
public void initialize(Map<String, Object> namespace, URL location, Resources resources)
{
  startButton.getButtonPressListeners().add(new ButtonPressListener()
  {
    @Override
    public void buttonPressed(Button button)
    {
      start();
    }
  });

}

private void start()
{
  pane1.setVisible(false);
  pane2.setVisible(true);
}

但是,当我单击按钮时,窗格 1 被隐藏,而窗格 2 永远不会出现。当我颠倒start().

有趣的是,当我注释掉时pane1.setVisible(false),当我单击按钮时,窗格 2出现。

这是我的第一个 Pivot 应用程序,所以也许有一些花哨的容器可以更好地完成我想做的事情,但我仍然想知道这里发生了什么。我正在尝试做的事情似乎很简单,我有点困惑为什么它不起作用。

4

1 回答 1

1

您可能想尝试使用 CardPane 在两个视图之间切换。教程在这里:http ://pivot.apache.org/tutorials/card-panes.html 基本的想法是让 CardPane “托管”你的两个 BoxPanes,如下所示:

<CardPane bxml:id="cardPane">
    <BoxPane bxml:id="pane1" ...>
        <Label text="Pane 1"/>
        ...
    </BoxPane>
    <BoxPane bxml:id="pane2" ...>
        <Label text="Pane 2"/>
    </BoxPane>
</CardPane>

使两个 BoxPanes 可见。然后,当您想在它们之间进行更改时,请使用cardPane.setSelectedIndex(...);

于 2014-12-09T18:05:15.817 回答