这是您要了解架构所必须做的。首先,这里使用的设计模式是观察者模式——
实现发布者/订阅者场景。我们需要一种机制,允许我们在发布者对象更改状态时通知订阅者对象。
您可以在此处找到有关实施它的更多信息。
但是,如果您的目标是制作自己的 JButton,那么最好的方法是子类化 JButton。
class MyCustomButton extends JButton{}
你问如何JFrame
才能拥有addMouseListener
- 这是因为JFrame
extends 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.