当前位置: 首页 > 面试题库 >

CardLayout,通过ButtonClick在JPanels之间切换

汤念
2023-03-14
问题内容

我想通过单击JPanels上的按钮在JPanels之间切换。

例如:我有一个带有JButton simknop的JPanel sim和一个带有JButton
helpknop的JPanel帮助,我想通过单击按钮在这两个JPanel之间进行切换。当我单击JButton
simknop时,应显示JPanel帮助;当我单击JButton帮助时,应显示JPanel sim。

您可以在下面找到不同的类:

main.java

public class main extends JFrame
{

    JPanel cards;
    sim sim;
    help help;

    public main()
    {
        this.setSize(1024,768);
        //this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("Crazy Bombardement");
        this.setLocation(800, 100);//standaard in de hoek van het scherm

        cards = new JPanel();
        cards.setLayout(new CardLayout());
        sim = new sim();
        help = new help();

        cards.add(sim, "SIM");
        cards.add(help, "HELP");

        this.add(cards);
        this.setVisible(true);
    }

    public static void main(String[] args) 
    {
        new main();
    }

sim.java

public class sim extends JPanel
{
    JButton simknop;

    public sim()
    {
        simknop = new JButton("simknop");
        this.add(simknop);
        this.setBackground(Color.black);
    }

}

help.java

public class help extends JPanel
{
    JButton helpknop;

    public help()
    {
        helpknop = new JButton("helpknop");
        this.add(helpknop);
        this.setBackground(Color.red);
    }

我想为此使用CardLayout,但无法弄清楚如何使其能够监听不同的ActionListeners。

任何帮助是极大的赞赏!


问题答案:

1)按钮不应位于CardLayout的每个面板上。无论卡面板上显示哪个卡,它们都必须位于始终可见的另一个外部面板上。

2)正确放置按钮后,您将向每个按钮添加一个ActionListener,其actionPerformed方法类似于(以SIM按钮为例):

CardLayout cl = (CardLayout) cards.getLayout();
cl.show(cards, "SIM");

进一步阅读:如何使用CardLayout

编辑: 从理论上讲,您可以直接在卡面板上使用按钮,但是它将是每个面板上的相反按钮(即SIM卡按钮将在“帮助”面板上,反之亦然)。



 类似资料:
  • 我有一个带有多个面板的JFrame类,我通过使用paintComponent(graphics g)方法绘制所有的图形,因此使用CardLayout没有任何用处。要切换帧,我只需点击一个按钮,比如回车,但问题是,当我切换面板时,paintCompenent中剩下的图形仍然存在。我还尝试使用panel.setvisible(false)使面板可见,这有点帮助,只是我要转换到的面板仍然不可见,即使在将

  • 我偶然发现了这种并发症,花了4个多小时调试和谷歌搜索,但无济于事... 基本上我这里有1个JFrame,2个JPanel。我将JFrame设置为JPanel的第1个内容窗格,当我运行应用程序时,JFrame将显示,其中包含JPanel。 现在这个JPanel里面有1个JButton,当我点击它时,我希望它切换到另一个JPanel。正如您从代码中看到的,当我单击JButton(AddProduct)

  • 所以我正在尝试制作一个basic程序来学习更多关于Java的知识,而我在切换屏幕时遇到了麻烦。我想有一个display类,我可以在其他类中调用它来处理所有的面板等等,然后创建一个类来构建每个面板。我现在尝试做的是使用startmenu类中的一个按钮使用display类中的一个方法从一个面板切换到另一个面板。 以下是类中的代码: 下面是我的display类:

  • 下面的代码生成九个单独的JPanels,其中有9个按钮。九个JPanel使用GridLayout排列到一个基本JPanel上。然后使用边框布局将这个基本JPanel放置到ContentPane上。我对JButtons和每个JPanel使用边框来明确定义它们的分离。每个JPanel中的JButtons看起来都很好,但是JPanels之间有一个间隙,这导致了双行的出现,这让我非常恼火。我尝试将每个JP

  • 几天来,我一直在努力更新卡式布局中的JText field和Jbox数据。我创建了小演示来解释我的问题...当我点击“开始”按钮时,它应该显示另一个面板,它正在工作,但是当我回到主页时,我希望我的JText field和jbox从“世界”更新为“你好”,但这不起作用。任何帮助和建议将不胜感激。很抱歉代码缩进,我不知道为什么复制粘贴不能正常工作)。

  • 问题内容: 在StackOverflow上有很多次用户问这样的问题… 我有一个包含一个孩子的主体。当用户单击按钮时,孩子应更改为另一个。我该如何做到这一点。 通常,用户实际上曾尝试实现此问题,但无法使其正常工作。 每当我回答这个问题时,我都会告诉他们做这样的事情(简单地说)… 我认为这是一个很合理的答案,而且我个人在许多自己的Java项目中都使用了它,没有问题。但是,我总是不满意我的回答,每个人都