我对JButton
如何运作感到非常困惑。我已经阅读了JButton的oracle文档,但我没有看到JButton如何添加actionlistener。我真的总是想知道像JFrame这样的东西以及所有可以有.addMouseListener
之类的东西。任何人都可以解释JButton
如何像.addActionListener(...)
语法一样添加一个actionListener吗?
我想知道如何做到这一点的原因是为每个人创建我自己的“JButton”,它可以添加一个actionListener,它会在需要时触发事件。这甚至可能吗?
答案 0 :(得分:3)
以下是了解架构的必要条件。首先,这里使用的设计模式是观察者模式 -
实施发布者/订阅者方案。我们需要一种机制 这允许我们在发布者时通知订阅者对象 对象改变状态。
您可以在here找到有关实施它的更多信息。
但如果您的目标是创建自己的JButton,那么最好的方法是使用子类JButton。
class MyCustomButton extends JButton{}
您询问了JFrame
addMouseListener
的具体情况 - 这是因为JFrame
扩展了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示例 - 包 - 观察者 斗 - 主题
将新数据包已进入Bucket的数据包的Bucket连接起来。在类中,Bucket类将调用notify方法,并且将通知所有已注册的数据包。如果数据包希望从Bucket中取消订阅,则只需要调用Unsubscribe方法,它将从Bucket的ArrayList中删除Object。