【问题标题】:CardLayout - How to use previous() and next() using NetBeans GUI Builder?CardLayout - 如何使用 NetBeans GUI Builder 使用 previous() 和 next()?
【发布时间】:2012-11-02 12:03:49
【问题描述】:

这是我尝试过的:

将一些 JPanel 拖到 JFrame 上(使用 NetBeans 检查器窗口)。

在 JFrame 构造函数中,使用 .setVisible(false) 使所有 JPanel 不可见,除了我想首先显示的那个。

它可以工作,我可以通过使用一些带有 actionPerformed 的按钮并将.setVisible(false) 添加到当前卡片并将.setVisible(true) 添加到我想要查看的卡片轻松地从一个切换到另一个。

我现在想做的是使用 CardLayout previous()next(),类似于浏览器的后退/前进。我还想从不同的地方访问一个面板,即两个面板可以链接到同一个面板,所以前一个面板并不总是相同的。

我尝试在 JFrame 类的 actionPerformed 中使用以下代码:

CardLayout cardLayout = (CardLayout) this.getLayout();
cardLayout.previous(this);

但是,它不起作用。我错过了什么?这应该做我想要的吗?

【问题讨论】:

标签: java swing user-interface netbeans cardlayout


【解决方案1】:

由于您已将JFrame 的布局设置为CardLayout,因此在使用其next()previous() 方法时需要使用父容器。对于JFrame,父容器是内容窗格。所以改变:

cardLayout.previous(this);

cardLayout.previous(getContentPane());

【讨论】:

    【解决方案2】:

    在您的 JPanel 中声明一个变量 String previousCard。当您从 CardA 转到 CardB 时,将 previousCard 变量设置为“CardA”或任何卡的名称。因此,在为从一张卡到另一张卡的所有过渡设置此设置后,后退按钮将始终执行相同的操作。

    cardLayouot.show(getContentPane(), previousCard);
    

    【讨论】:

      猜你喜欢
      • 2012-07-26
      • 2014-03-20
      • 2017-08-13
      • 2015-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-14
      • 2011-05-29
      相关资源
      最近更新 更多