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



>我用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) 之一更改卡(显示卡),它本身就是一张"卡"。我想在单击另一个类中的 JPanel(CasaPanel) 中的按钮后更改"卡片"。怎么做?我的意思是我知道如何添加按钮和侦听器,但我不知道是否可以从属于该帧的 Jpanel 类调用 JFrame 中的方法?如何从其他类引用 JFrame 中的方法?我看了这个问题,但我真的不想把所有代码放在一个类中。

您的"卡"将添加到使用CardLayout的面板中。如果您想更换卡片,那么您只需要访问布局管理器。因此,从您的面板中,您可以使用 getParent() 方法来获取父面板,然后使用 getLayout() 方法来获取 CardLayout。

因此,ActionListener 中的代码可能如下所示:

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

另外,你的类的一般设计是错误的。不应使用静态方法。阅读 Swing 教程中有关如何使用 CardLayout 的部分,了解工作示例和构建代码的更好方法。

最新更新