【发布时间】:2012-10-21 13:30:06
【问题描述】:
我有一个包含默认 JPanel 的主 JFrame。我正在尝试使用此 JPanel 将不同的 JPanel 附加到我的应用程序,以模拟浏览应用程序的效果。我注意到,要使 CardLayout 工作,JFrame 通常必须有某种方式来控制 JPanel 中显示的内容(例如按钮、下拉框等)。我想要做的是有一个主页( JPanel)加载到 JFrame 中的默认 JPanel 中,并允许用户使用该主页 JPanel 中可用的可点击按钮/图标进行导航。
由于 JFrame 和默认 JPanel 与其他 JPanel 位于不同的类中,因此我无法访问默认 JPanel(因为它是私有的)以通过单击 JPanel 上的按钮来更改其上显示的内容其他类之一。有没有办法解决这个问题?
另外,如果我将应用程序中所需的每个按钮都附加到 JFrame 并控制从那里显示的 JPanel,它会起作用吗?我可以根据需要使按钮可见/不可见,这有意义吗?
这是我在 JFrame 类中调用的代码:
private void jButton45MouseClicked(java.awt.event.MouseEvent evt) {
CardLayout card= (CardLayout) displayPanel.getLayout();
card.show(displayPanel, "register");
}
displayPanel 是循环显示所有卡片的默认面板,而 jButton45 是 JFrame 中标题为“Register”的按钮。 “register”是我要显示的 JPanel 变量的名称。
【问题讨论】:
-
show()的第二个参数不是变量名。这是您在致电add()时提供的名称。如果您使用的是 NetBeans GUI Builder,则可以在属性窗口中进行设置。选择面板并向下滚动到“布局”。将 Card Name 设置为所需的 String 值,然后在调用show()时使用相同的值。
标签: java swing user-interface jbutton cardlayout