gpt4 book ai didi

java - 具有多个输入选项的 ActionEvent e.getsource()

转载 作者:行者123 更新时间:2023-12-01 18:58:56 25 4
gpt4 key购买 nike

我正在尝试为我遇到的问题创建一个看起来不错的解决方案。我可以用文字解释,但是代码会更清晰:

public void actionPerformed(ActionEvent e) {       
if(e.getSource().equals(ClassA.getButtonOne()) ||
e.getSource().equals(ClassB.getButtonOne())) {
???????.setEnabled(false); (class a or class b)
}

说明:如何将 e.getSource() 更改为正确的类类型,以便我可以对其执行方法?一个额外的细节:我确信 if 语句中的所有方法都拥有我想要执行的方法,在上面的示例中“setEnabled”。我可以通过创建多个 if 语句来解决该问题,但这会创建重复的代码(特别是因为将来还会有类 C 和 D)。

最佳答案

如果您需要使用相同的监听器,则要求类似于 visitordouble-dispatch图案。您应该重定向回源类,例如

public void actionPerformed(ActionEvent e) {       
Object source = e.getSource();
if (source instanceof MySource) {
((MySource)source).executeOnEvent(e, this);
}
....

这样您就不必实现大量的“if”(正如您所发现的,这很容易出错且冗长)。您只需在收到事件时检查对象类型,然后在适当的情况下回调它。请注意,我在上面回调了事件和接收事件的对象。但是,您可以选择哪些参数是重要/相关的。

关于java - 具有多个输入选项的 ActionEvent e.getsource(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13007875/

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