有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

swing Java:JButton actionListener解释

我对JButton的工作原理极为困惑。我已经阅读了JButton的oracle文档,但是我没有看到JButton如何添加actionlistener。我真的一直在想,像JFrames这样的东西怎么会有.addMouseListener之类的东西。有人能解释一下JButton如何像.addActionListener(...)语法那样添加actionListener吗

我想知道如何做到这一点的原因是创建我自己的“JButton”,它可以添加一个actionListener,并在需要时触发事件。这可能还是不可能


共 (1) 个答案

  1. # 1 楼答案

    以下是理解架构所必须做的。首先,这里使用的设计模式是观察者模式-

    Implementing the Publisher/Subscriber scenario. We need a mechanism which allows us to notify subscriber objects whenever the publisher object changes state.

    您可以在here上找到有关实现它的更多信息

    但是,如果您的目标是制作自己的JButton,那么最好的方法就是将JButton子类化

    class MyCustomButton extends JButton{}
    

    你问过JFrame怎么会有addMouseListener——这是因为JFrame扩展了java.awt.Component。希望这有帮助

    编辑

    观察者什么都不做。受试者如有任何变化,请通知观察者。这是notify方法

     public void notify()
          {
            for (int i=0;i < observers.size();i++)
            {
              Observer ob = (Observer)observers.get(i);
              ob.update(newValue);
            }
          }
    

    再回到包和桶的例子- 包观察者 桶主题

    Bucket连接一个新数据包进入Bucket的数据包。在类中,Bucket类将调用notify方法,所有注册的数据包都将被通知。如果一个数据包希望从Bucket中取消订阅,它只需要调用unsubscribe方法,它就会从Bucket的ArrayList中删除该对象