gpt4 book ai didi

java - 为什么我的 ActionListener 不能为我的按钮工作?

转载 作者:行者123 更新时间:2023-11-30 03:26:35 25 4
gpt4 key购买 nike

当我点击按钮时,我遇到了一些问题,无法发生任何事情。

  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);
  • 这是我的 Action 监听器。

    public void actionPerformed(ActionEvent e) {

    if (e.getSource() == btnsuit1)
    {
    btnsuit1.setVisible(false);
    }

    if (e.getSource() == btnsuit2)
    {
    btnsuit2.setVisible(false);
    }
  • 我不知道为什么没有发生任何事情,但我四处搜索了一下,我认为有几种可能性。

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

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

    感谢您的帮助。

    --

    授予

    最佳答案

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

    JButton btnsuit1 = new JButton();

    因此,btnsuit1.setVisible(false) 中的btnsuit1 可能为 null。尝试更改 btnsuit1 初始化:

    btnsuit1 = new JButton();

    应该可以。

    关于java - 为什么我的 ActionListener 不能为我的按钮工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30054899/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com