Java添加侦听器以在不同类中执行方法
我正在构建一个简单的GUI程序。 其中一个类是带有多个按钮的工具栏(JPanel)。另一个类是主窗口,其中包括此工具栏及其按钮。 我试图向每个按钮添加操作侦听器,以便它们在其他组件上执行窗口方法,就像其他JPanel一样 据我所知,显而易见的解决方案是向Window类添加侦听器,如下所示:Java添加侦听器以在不同类中执行方法,java,swing,methods,listener,action,Java,Swing,Methods,Listener,Action,我正在构建一个简单的GUI程序。 其中一个类是带有多个按钮的工具栏(JPanel)。另一个类是主窗口,其中包括此工具栏及其按钮。 我试图向每个按钮添加操作侦听器,以便它们在其他组件上执行窗口方法,就像其他JPanel一样 据我所知,显而易见的解决方案是向Window类添加侦听器,如下所示: class Window { private Toolbar toolbar; private void *methodOnOtherWindowComponents*() {
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结构,其中您的菜单调用更改模型状态的控制器方法。这将反映在视图中的更改中。请查一下这个。而且