Jbutton Not Switching的Cardlayout

时间:2015-05-20 14:16:13

标签: java jbutton cardlayout

您好我是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;
   }
}

1 个答案:

答案 0 :(得分:0)

所有变量名称的首字母不应以大写字母开头。我从未在任何使用大写字符的论坛中看过教程或答案,因此不要构成自己的约定。通过实例学习。

  

我只能使用带有卡片布局的普通按钮,不幸的是我想用按钮使用我自己的图标,为此我需要使用JButton。

JButton是一个普通的按钮。您指的是什么其他类型的按钮?按钮是否有文字或图标或两者都无关紧要,它仍然是一个按钮。

代码中的按钮无法正常工作,因为您没有将ActionListener添加到按钮中。

阅读How to Use Button上Swing教程中的部分,了解更多信息和示例。本教程还有一个关于How to Write ActionListeners的部分。

您的代码有action(...)方法。我不知道这是否是由IDE生成的,但基本上该方法中的代码将是ActionListener中的代码。

add ("Center", AppPanel);

这不是将组件添加到面板的方法的正确形式。首先,所有人都不使用硬编码的文字字符串,使用API​​提供的变量:

add (appPanel, BorderLayout.CENTER);