为什么我的ActionListener不能用于我的按钮?

时间:2015-05-05 13:50:47

标签: java css swing button actionlistener

单击按钮时,我遇到了一些麻烦。

  1. 这是我宣布按钮的地方

    public class DoND extends JFrame implements ActionListener {
    
    public JButton btnsuit1, btnsuit2, btnsuit3, btnsuit4, btnsuit5, btnsuit6, btnsuit7, btnsuit8, btnsuit9, btnsuit10, btnsuit11, btnsuit12, btnsuit13, btnsuit14, btnsuit15, btnsuit16, btnsuit17, btnsuit18, btnsuit19, btnsuit20, btnsuit21, btnsuit22, btnsuit23, btnsuit24, btnsuit25, btnsuit26;
    
    public static void main(String[] args) {
    
        new DoND();
    }
    
  2. 这是关于我的按钮的所有详细信息。 (我只提供了2个按钮的详细信息,但还有24个按钮。)

    JButton btnsuit1 = new JButton();
    btnsuit1.setIcon(new ImageIcon("images\\suitcases\\case1.png"));
    btnsuit1.setPreferredSize(new Dimension(200, 150));
    btnsuit1.setHorizontalAlignment(SwingConstants.CENTER);
    btnsuit1.addActionListener(this);
    
    
    JButton btnsuit2 = new JButton();
    btnsuit2.setIcon(new ImageIcon("images\\suitcases\\case2.png"));
    btnsuit2.setPreferredSize(new Dimension(200, 150));
    btnsuit2.setHorizontalAlignment(SwingConstants.CENTER);
    btnsuit2.addActionListener(this);
    
  3. 这是我将按钮添加到中心面板的位置。然后将我的中心面板添加到我的主面板。然后将我的主面板添加到我的框架中。

  4. 中心小组

        JPanel centerPanel = new JPanel();
        centerPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        centerPanel.setBackground(Color.BLACK);
        centerPanel.add(btnsuit1);
        centerPanel.add(btnsuit2);
    

    主要小组

        JPanel mainPanel = new JPanel();
        mainPanel.setLayout(new BorderLayout());
        mainPanel.setBackground(Color.BLACK);
        mainPanel.add(northPanel, BorderLayout.NORTH);
        mainPanel.add(centerPanel, BorderLayout.CENTER);
        mainPanel.add(eastPanel, BorderLayout.EAST);
        mainPanel.add(westPanel, BorderLayout.WEST);
        mainPanel.add(southPanel, BorderLayout.SOUTH);
    

        setContentPane(mainPanel);
        setSize(3000, 1000);
        setTitle("Deal or No Deal");
        setLocationRelativeTo(null);
        setResizable(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    
    1. 这是我的行动倾听者。

      public void actionPerformed(ActionEvent e) {
      
      if (e.getSource() == btnsuit1)
      {
          btnsuit1.setVisible(false);
      }
      
       if (e.getSource() == btnsuit2)
      {
          btnsuit2.setVisible(false);
      }
      
    2. 我不知道为什么没有发生任何事情,但我已经四处寻找,我认为有一些可能性。

      a)我添加ActionListener的按钮与ActionPerformed正在搜索的按钮不同。

      b)我必须将ActionListener扩展到我的所有按钮所在的辅助面板。

      感谢您的帮助。

      -

      捐赠

1 个答案:

答案 0 :(得分:2)

您将JButtons声明为类字段,但您从未初始化它们。通过以下方式创建了新的JButton:

<select data-required="true" name="option" class="selectpicker" multiple>
  <option value="" disabled>Pick the items that apply to u</option>
  <option value="1">Shipping / post</option>
  <option value="2">Customers can collect</option>
  <option value="3">Other</option>
</select>

因此,JButton btnsuit1 = new JButton(); 中的btnsuit1可能为空。 尝试更改btnsuit1.setVisible(false)初始化:

btnsuit1

它应该有用。