Java 带Jbutton的Cardlayout未切换

Java 带Jbutton的Cardlayout未切换,java,jbutton,cardlayout,Java,Jbutton,Cardlayout,您好,我对java编程相当陌生,我目前正尝试使用GUI开发一个小游戏,现在我遇到了一个问题,我只能使用带有卡片布局的普通按钮,不幸的是,我想用我自己的图标来显示按钮,要做到这一点,我需要使用JButton。但由于某些原因,当我使用JButton时,它不会与面板切换。我只是想知道我做错了什么。我正在用一个名为Ready To Program的IDE作为小程序进行编程 { CardLayout PanelLayout = new CardLayout (); JPanel AppPane

您好,我对java编程相当陌生,我目前正尝试使用GUI开发一个小游戏,现在我遇到了一个问题,我只能使用带有卡片布局的普通按钮,不幸的是,我想用我自己的图标来显示按钮,要做到这一点,我需要使用JButton。但由于某些原因,当我使用JButton时,它不会与面板切换。我只是想知道我做错了什么。我正在用一个名为Ready To Program的IDE作为小程序进行编程

{
   CardLayout PanelLayout = new CardLayout ();
   JPanel AppPanel = new JPanel (); //Main App Panel using cardlayout

   JPanel StartPanel = new JPanel (); //Start Menu Panel
   JPanel GamePanel = new JPanel (); //Running Game Panel

   JButton StartBtn = new JButton ();

   public void init ()
   {


      StartBtn.setIcon(new ImageIcon ("StartIcon.png"));
      StartBtn.setBorder(BorderFactory.createEmptyBorder());
      StartBtn.setContentAreaFilled(true);

      StartPanel.add (StartBtn);

      AppPanel.setLayout (PanelLayout);

      AppPanel.add (StartPanel, "1");
      AppPanel.add (GamePanel, "2");

      PanelLayout.show (AppPanel, "1");

      setLayout (new BorderLayout ());
      add ("Center", AppPanel);
   }


   public boolean action (Event e, Object o)
   {
      if (e.target == StartBtn)
      {
         PanelLayout.show (AppPanel, "2");
      }
      return true;
   }
}

所有变量名称中的第一个不应以大写字符开头。我从未在任何论坛上看到过使用大写字母的教程或答案,所以不要制定自己的惯例。以身作则

我只能使用带有卡片布局的普通按钮,不幸的是,我想用我自己的图标来显示按钮,要做到这一点,我需要使用JButton

JButton是一个普通按钮。你指的是什么其他类型的按钮?不管按钮是文本还是图标,或者两者都有,它仍然是一个按钮

代码中的按钮不起作用,因为您没有向按钮添加和ActionListener

有关更多信息和示例,请阅读上Swing教程的部分。本教程还有一节介绍如何编写ActionListeners

您的代码有一个
操作(…)
方法。我不知道这是否是由IDE生成的,但基本上该方法中的代码就是ActionListener中的代码

add ("Center", AppPanel);
这不是将构件添加到配电盘的正确方法。首先,不要使用硬编码文字字符串,请使用API提供的变量:

add (appPanel, BorderLayout.CENTER);

它似乎遗漏了代码中可以理解的一部分。您的
PanelLayout
定义在哪里?您在哪里调用
action()
fonction?更多信息,请不要忘记该变量的名称以小写字符开头!令人惊叹的!这非常有效,也感谢额外的建议,我的IDE创建了布尔操作方法,我的课堂上教我使用它。我也从来没有被教过使用Jbuttons,只是被称为“按钮”的东西,它不是swing的一部分,因为我也从来没有被教过。