gpt4 book ai didi

Java:JButton actionListener 外植

转载 作者:行者123 更新时间:2023-11-29 05:58:02 24 4
gpt4 key购买 nike

我对 JButton 的工作原理感到非常困惑。我已经阅读了JButton的oracle文档,但我没有看到 JButton 如何添加一个 Action 监听器。我真的一直想知道 JFrames 之类的东西如何拥有 .addMouseListener 之类的东西。任何人都可以解释 JButton 如何像 .addActionListener(...) 语法一样添加 actionListener 吗?

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

最佳答案

以下是了解架构所需要做的事情。首先这里使用的设计模式是观察者模式——

Implementing the Publisher/Subscriber scenario. We need a mechanismwhich allows us to notify subscriber objects whenever the publisherobject changes state.

您可以在 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);
}
}

再次回到数据包和桶的例子——数据包 - 观察者桶 - 主题

Bucket wire Packet 表示有新的 Packet 进入了 Bucket。在 classes Bucket 类中会调用 notify 方法,所有注册的 Packets 都会收到通知。如果一个 Packet 希望从 Bucket 中取消订阅,它只需要调用 Unsubscribe 方法,它就会从 Bucket 的 ArrayList 中删除 Object。

关于Java:JButton actionListener 外植,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11287399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com