Java添加侦听器以在不同类中执行方法

Java添加侦听器以在不同类中执行方法,java,swing,methods,listener,action,Java,Swing,Methods,Listener,Action,我正在构建一个简单的GUI程序。 其中一个类是带有多个按钮的工具栏(JPanel)。另一个类是主窗口,其中包括此工具栏及其按钮。 我试图向每个按钮添加操作侦听器,以便它们在其他组件上执行窗口方法,就像其他JPanel一样 据我所知,显而易见的解决方案是向Window类添加侦听器,如下所示: class Window { private Toolbar toolbar; private void *methodOnOtherWindowComponents*() {

我正在构建一个简单的GUI程序。 其中一个类是带有多个按钮的工具栏(JPanel)。另一个类是主窗口,其中包括此工具栏及其按钮。 我试图向每个按钮添加操作侦听器,以便它们在其他组件上执行窗口方法,就像其他JPanel一样

据我所知,显而易见的解决方案是向Window类添加侦听器,如下所示:

class Window
{
    private Toolbar toolbar;

    private void *methodOnOtherWindowComponents*() {
        ....;
    }

    // Method to add Listeners on Buttons via anonymous classes
    private void addListeners() {
        toolbar.getButton().addActionListener(
             new ActionListener() {
                 public void actionPerformed(ActionEvent event){
                    *methodOnOtherWindowComponents()*
然而,由于Window类仅用于将内容组合在一起,因此添加侦听器似乎使其过于复杂

如果我尝试在工具栏类中添加监听器,在工具栏类中创建按钮(更好的解决方案)或在单独的类中添加监听器(最理想的解决方案),那么我无法在Window类中引用methodToExecute()

我希望能找到一种方法来添加这样的侦听器:

void actionPerformed(ActionEvent event, Window w) {
    w.methodOnOtherWindowComponents()
}
有没有类似的方法?
谢谢。

这方面的标准解决方案是为您的整个程序提供一个模型-视图-控制器或MVC结构,其中您的菜单调用更改模型状态的控制器方法。这将反映在视图中的更改中。请查一下这个。而且