gpt4 book ai didi

java - 让您的类成为 Java 中的事件源

转载 作者:行者123 更新时间:2023-12-01 16:04:34 25 4
gpt4 key购买 nike

我正在 Java 中制作一个自定义按钮,它有两种状态:mousePressed 和 mouseReleased。同时,如果我想重用这个按钮,以便其他事件监听器可以向它注册,这些是我应该做的适当步骤(这是一个硬件分配,所以虽然可以使用 JButton,但我认为我们正在尝试表明我们可以创建自己的 Button 来像 JButton 一样:

  • 覆盖 addActionListener(ActionListener 操作)
  • 覆盖removeActionListener(ActionListener操作)
  • 有一个私有(private)变量,如 List list = new List () 来跟踪事件何时添加,以及某种带有 for 循环的函数来运行所有操作。这是我到目前为止所拥有的:

    公共(public)类自定义按钮 { 公共(public)静态无效主(字符串[]参数) { EventQueue.invokeLater(new Runnable() { 公共(public)无效运行() { CustomButtonFrame 框架 = new CustomButtonFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 框架.setVisible(true); } }); }

        public void addActionListener(ActionListener al)
    {
    listenerList.add(al);
    }

    public void removeActionListener(ActionListener al)
    {
    listenerList.remove(al);
    }

    private void notifyListeners()
    {
    for (ActionListener action : listenerList) {
    action.actionPerfomed();
    }
    }

    List<ActionListener> listenerList = new ArrayList<ActionListener>();
    }

我收到编译错误:第 38 行:对 List 的引用不明确,java.util 中的类 java.util.List 和 java.awt 中的类 java.awt.List 均匹配 List ListenerList = new ArrayList() ;

第34行:在接口(interface)java.awt.event.ActionListener action.actionPerformed()中找不到符号、方法actionPerfomed();

最佳答案

不,完全不!

JButton 拥有您需要的一切。只需将您自己的监听器添加到按钮即可。不要覆盖某些东西。就像这样:

public class MyButton extends JButton implements MouseListener // maybe you want to add other listeners... separate them with comma's.
{
public MyButton(String caption)
{
super(caption);
addMouseListener(this);
}

// implement your listener methods here

}

关于java - 让您的类成为 Java 中的事件源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2899214/

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