gpt4 book ai didi

java - 如何从 Jpanel 更改 Jframe 卡布局中的 'card' 属于卡并将其放置在另一个类中?

转载 作者:行者123 更新时间:2023-12-01 18:06:51 27 4
gpt4 key购买 nike

我编写了一个带有cardlayout的jframe,如下代码所示:

public class Gui extends JFrame {


private static CardLayout cardlayout = new CardLayout();
private static JPanel cards = new JPanel(cardlayout);

public Gui() {

cards.setLayout(cardlayout);
CasaPanel card =new CasaPanel();
cards.add(card,"casa");
InCash card_1 = new InCash();
cards.add(card_1,"in");
OutCash card_2 = new OutCash();
cards.add(card_2,"out");
setLayout(new BorderLayout());
add(cards, BorderLayout.CENTER);

}

public static void showCard(String name)
{
cardlayout.show(cards, name);
}

我正在尝试从 JPanel(CasaPanel) 之一调用更改卡 (ShowCard) 的方法,该 JPanel(CasaPanel) 本身就是一张“卡”。我想在单击另一个类中的 JPanel(CasaPanel) 中的按钮后更改“卡”。如何做到这一点?我的意思是我知道如何添加按钮和监听器,但我不知道是否可以从属于该框架的 Jpanel 类调用 JFrame 中的方法?如何从其他类引用JFrame中的方法?我看了this问题,但我真的不想将所有代码放在一个类中。

最佳答案

您的“卡片”已添加到使用CardLayout 的面板中。如果您想更改卡片,则只需访问布局管理器即可。因此,您可以在面板中使用 getParent() 方法获取父面板,然后使用 getLayout() 方法获取 CardLayout。

因此 ActionListener 中的代码可能类似于:

JPanel parent = (JPanel)getParent();
CardLayout layout = parent.getLayout();
layout.show(panel, "...");

另外,你的类(class)的总体设计是错误的。您不应该使用静态方法。阅读 Swing 教程中关于 How to Use CardLayout 的部分获取工作示例以及构建代码的更好方法。

关于java - 如何从 Jpanel 更改 Jframe 卡布局中的 'card' 属于卡并将其放置在另一个类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35749095/

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