如何为单个按钮设置多个 ActionListener
how to have multiple ActionListeners for a single button
我有一个基于向导的软件,有很多面板。可以有不同的路径来获取最后一个屏幕。所以每条路径都有自己的控制器来计算数据。在最后一个面板中,所有路径都在那里结束,有一个按钮来完成数据。该按钮有一个在所有路径的控制器中调用的动作侦听器。因此,当按下按钮时,它基本上会运行所有控制器,并且显然会出现错误。
这是最终面板中按钮动作侦听器的方法:
public void destinationNextButtonListener(ActionListener listenForDestinationNextButton){
localDestinationNext.addActionListener(listenForDestinationNextButton);
}
每个控制器的承包商我都像这样初始化 Action Listener:
控制器 1:
{
.
.
this.localDestinationChooser.destinationNextButtonListener(new destinationNextButtonListener());
}
class destinationNextButtonListener implements ActionListener{...}
所以如果有2个控制器,当按下按钮时,所有控制器都开始工作。我正在寻找一种逻辑或动作侦听器决定它必须侦听哪个控制器的东西。
有什么想法吗?
最好的想法(据我所知,我不是 Java 大师)是在用户失败时放入布尔语句小路。这样在 ActionListener
定义 boolean alphaPath
中,它应该在程序开始时实例化为 false
并且应该是一个 class 变量,而不是本地变量,然后设置为真的。然后在最后 ActionListener
使用
if else-if
(根据需要扩展,即添加另一个 else-if
)语句集以查找用户访问的路径并执行正确的代码,使得
if(alphaPath == true)
{
//execute proper code
}
else if(betaPath == true)
{
//execute beta code
}
如果您能向我们展示更多代码,以便我们更好地理解您的程序,那就太好了。我的解决方案基于我 相信 您的程序的编码方式。看到实际代码会很棒。当您编辑问题并将代码添加到您的问题时,请在此答案的评论部分添加一条消息,我将编辑我的解决方案。
我认为您应该使用继承来提高设计的灵活性(并消除复杂性)。
概念是每个屏幕都应该由自己的控制器控制。
所有其他屏幕也会有其特定的控制器(可以甚至应该继承最后一个屏幕)
有了它,最后一个屏幕上的按钮的行为对于所有向导页面都可以是相同的,无论使用哪种实现方式到达那里(因为它们都继承自父页面)
我有一个基于向导的软件,有很多面板。可以有不同的路径来获取最后一个屏幕。所以每条路径都有自己的控制器来计算数据。在最后一个面板中,所有路径都在那里结束,有一个按钮来完成数据。该按钮有一个在所有路径的控制器中调用的动作侦听器。因此,当按下按钮时,它基本上会运行所有控制器,并且显然会出现错误。 这是最终面板中按钮动作侦听器的方法:
public void destinationNextButtonListener(ActionListener listenForDestinationNextButton){
localDestinationNext.addActionListener(listenForDestinationNextButton);
}
每个控制器的承包商我都像这样初始化 Action Listener:
控制器 1:
{
.
.
this.localDestinationChooser.destinationNextButtonListener(new destinationNextButtonListener());
}
class destinationNextButtonListener implements ActionListener{...}
所以如果有2个控制器,当按下按钮时,所有控制器都开始工作。我正在寻找一种逻辑或动作侦听器决定它必须侦听哪个控制器的东西。
有什么想法吗?
最好的想法(据我所知,我不是 Java 大师)是在用户失败时放入布尔语句小路。这样在 ActionListener
定义 boolean alphaPath
中,它应该在程序开始时实例化为 false
并且应该是一个 class 变量,而不是本地变量,然后设置为真的。然后在最后 ActionListener
使用
if else-if
(根据需要扩展,即添加另一个 else-if
)语句集以查找用户访问的路径并执行正确的代码,使得
if(alphaPath == true)
{
//execute proper code
}
else if(betaPath == true)
{
//execute beta code
}
如果您能向我们展示更多代码,以便我们更好地理解您的程序,那就太好了。我的解决方案基于我 相信 您的程序的编码方式。看到实际代码会很棒。当您编辑问题并将代码添加到您的问题时,请在此答案的评论部分添加一条消息,我将编辑我的解决方案。
我认为您应该使用继承来提高设计的灵活性(并消除复杂性)。
概念是每个屏幕都应该由自己的控制器控制。
所有其他屏幕也会有其特定的控制器(可以甚至应该继承最后一个屏幕)
有了它,最后一个屏幕上的按钮的行为对于所有向导页面都可以是相同的,无论使用哪种实现方式到达那里(因为它们都继承自父页面)