1

我对 a 如何JButton工作感到非常困惑。我已经阅读了JButton的 oracle 文档,但我没有看到 JButton 如何添加一个动作监听器。我真的一直想知道像 JFrames 这样的东西以及所有可以拥有类似东西的东西.addMouseListener。谁能解释一下如何JButton.addActionListener(...)语法一样添加一个 actionListener ?

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

4

1 回答 1

3

这是您要了解架构所必须做的。首先,这里使用的设计模式是观察者模式——

实现发布者/订阅者场景。我们需要一种机制,允许我们在发布者对象更改状态时通知订阅者对象。

您可以在此处找到有关实施它的更多信息。

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

class MyCustomButton extends JButton{}

你问如何JFrame才能拥有addMouseListener- 这是因为JFrameextends java.awt.Component。希望这可以帮助。

编辑

观察者不做任何事情。如果有任何变化,主题会通知观察者。这是通知方法。

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

再次回到 Packet 和 Bucket 示例 - Packet - Observer Bucket - Subject

Bucket wires the Packet that a new Packet has entered the Bucket. In classes Bucket class will call the notify method and all the registered Packets will be notified. If a Packet wishes to unsubscribe itself from the Bucket it just needs to call the Unsubscribe method and it will remove the Object from the ArrayList of the Bucket.

于 2012-07-02T03:23:48.380 回答