Java:JButton actionListener外植

时间:2012-07-02 03:09:11

标签: java swing interface jbutton actionlistener

我对JButton如何运作感到非常困惑。我已经阅读了JButton的oracle文档,但我没有看到JButton如何添加actionlistener。我真的总是想知道像JFrame这样的东西以及所有可以有.addMouseListener之类的东西。任何人都可以解释JButton如何像.addActionListener(...)语法一样添加一个actionListener吗?

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

1 个答案:

答案 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。