gpt4 book ai didi

java - JFrame JPanel GUI 中的 CardLayout

转载 作者:行者123 更新时间:2023-12-02 00:09:27 26 4
gpt4 key购买 nike

我有一个主 JFrame,其中包含一个默认的 JPanel。我正在尝试使用此 JPanel 将不同的 JPanel 附加到我的应用程序,以模拟浏览应用程序的效果。我注意到,要使 CardLayout 正常工作,JFrame 通常必须有某种方法来控制 JPanel 中显示的内容(例如按钮、下拉框等)。我想做的是有一个主页( JPanel)加载到 JFrame 中的默认 JPanel 中,并允许用户使用该主 JPanel 中可用的可单击按钮/图标进行导航。

由于 JFrame 和默认 JPanel 与其他 JPanel 位于不同的类中,因此我无法访问默认 JPanel(因为它是私有(private)的),无法通过单击 JPanel 上的按钮来更改其上显示的内容其他类(class)之一。有什么办法可以解决这个问题吗?

此外,如果我将应用程序中所需的每个按钮附加到 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 变量的名称。

最佳答案

这听起来像是一个设计问题。如果没有看到一些代码,我无法提供具体细节。话虽这么说,您需要解决的主要问题是提供控制导航的按钮以及对默认 JPanel 及其 CardLayout 的引用。从这里开始,只需调用 next()previous()show() 即可。

附录:

show() 的第二个参数是您在调用 add() 时提供的名称。如果您使用的是 NetBeans GUI Builder,则可以在属性窗口中进行设置。选择面板并向下滚动到“布局”。将卡名称设置为所需的字符串值,然后在调用 show() 时使用相同的值。

关于java - JFrame JPanel GUI 中的 CardLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13168980/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com