【问题标题】:Using CardLayout in Netbeans [closed]在 Netbeans 中使用 CardLayout [关闭]
【发布时间】:2012-12-14 02:56:26
【问题描述】:
getContentPane().setLayout(new CardLayout());
CardLayout x = (CardLayout) getLayout();

我使用的是 Netbeans,在设计管理器中我选择了我的 JFrame 内容作为 CardLayout。但是到目前为止我还不能让它工作。我在 initComponenets 调用之后设置了上面的代码,但我仍然有这个错误:

java.awt.BorderLayout cannot be cast to java.awt.CardLayout

不知何故,我有 BorderLayout 而不是 CardLayout。这怎么可能?我刚刚将布局设置为 CardLayout。 PS:我的课程扩展了 javax.swing.JFrame。

【问题讨论】:

  • 1) 我通常发现将单个 JPanel 添加到内容窗格或将其设置为 内容更容易、更简洁窗格。然后任何与边框、布局、颜色有关的事情都可以通过JPanel 完成。 2) "my class extends javax.swing.JFrame" 除非添加或覆盖方法,否则不要扩展框架。只保留一个参考。
  • 我是 netbeans 和 java 新手,所以我不太了解边界和其他东西。我使用来自 Swing GUI Forms>Application Sample Form 的 netbeans 生成的代码。然后添加了 2 个面板和 CardLayout 布局。当我尝试切换时,我收到这些错误。如果有任何更简单的方法来解决这个问题,我将不胜感激。
  • 请参阅 this answer 以获取有效的 CardLayout。我认为你应该暂时把 Netbeans 放在一边,学习如何编写 Java。
  • 我知道如果我手动编写 JPanel 和框架,它就可以工作。我刚刚从 Eclipse 切换到 Netbeans,因为它具有本地 GUI 管理器,并且花了很多时间从 SWT 切换到 Swing。不幸的是,我没有时间通过​​代码编写 GUI,因为我必须专注于项目的后端。我只需要快速修复 Netbenas,我可以继续编写后端代码。
  • “我只需要快速修复 Netbenas” 雇用某人。由于“过于本地化”而投票结束。

标签: java swing jframe layout-manager cardlayout


【解决方案1】:

你可以使用:

CardLayout x = (CardLayout) getContentPane().getLayout();

类似切换卡片面板可以使用:

x.show(getContentPane(), "card2");

如果您只是使用单独的 JPanel 作为“卡片”容器,这不是问题,而且如果您希望添加,您还可以获得使用 JFrame BorderLayout 的额外好处导航按钮,例如在BorderLayout.SOUTH 位置。

Essential reading for using CardLayout

【讨论】:

  • 感谢您的快速回答!然后我得到这个错误:java.lang.IllegalArgumentException: wrong parent for CardLayout。我刚刚用全新的项目尝试过。
  • 我猜你为CardLayout.show使用了错误的容器
  • 我一直在尝试通过“下一步”来做,我将布局的名称作为参数。似乎代码在分配时失败,而不是在“下一个”语句中。显示字符串名称有效。顺便说一句:我也读了这个页面,但显然我没有给予足够的关注。非常感谢!
猜你喜欢
  • 2012-07-26
  • 2013-05-28
  • 2012-11-02
  • 2014-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多