首页 文章

使您的类成为Java中的事件源

提问于
浏览
0

我在Java中创建了一个自定义按钮,它有两个状态:mousePressed和mouseReleased . 同时,如果我想重用这个按钮,以便其他事件监听器可以注册它,这些是我应该做的适当步骤(这是一个新的任务,所以尽管可以使用JButton,我想我们正在尝试表明我们可以像JButton一样创建自己的Button:

  • 重写addActionListener(ActionListener操作)

  • 重写removeActionListener(ActionListener操作)

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

public class CustomButton {public static void main(String [] args){EventQueue.invokeLater(new Runnable(){public void run(){CustomButtonFrame frame = new CustomButtonFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.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行:找不到符号,方法actionPerfomed()在接口java.awt.event.ActionListener action.actionPerformed();

2 回答

  • 0

    不,完全没有!

    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
    
    }
    
  • 1

    我在Java中创建了一个自定义按钮,它有两个状态:mousePressed和mouseReleased

    也许你应该使用JToggleButton .

相关问题