簡體   English   中英

為什么我的ActionListener不適合我的按鈕?

[英]Why isn't my ActionListener working for my buttons?

我在單擊按鈕時遇到任何麻煩。

  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. 這是將按鈕添加到中間面板的地方。 然后將我的中央面板添加到主面板。 然后將我的主面板添加到我的框架中。

中央面板

    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); } 

我不知道為什么什么也沒發生,但是我四處搜尋,我認為有幾種可能。

a)我添加了ActionListener的按鈕與ActionPerformed正在搜索的按鈕不同。

b)我必須將ActionListener擴展到我所有按鈕所在的輔助面板。

我感謝您的幫助。

-

格蘭特

您已將JButtons聲明為類字段,但從未對其進行初始化。 指示您通過以下方式創建新的JButton:

JButton btnsuit1 = new JButton();

所以,在btnsuit1btnsuit1.setVisible(false)可能是零。 嘗試更改btnsuit1初始化:

btnsuit1 = new JButton();

它應該工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM