2011-10-07 64 views
3

我想使用Window Builder并同时使用MVC范例。当Window Builder将所有代码添加到一个文件时,它会非常混乱。是否可以在Window Builder for Eclipse中定义自己的“控制器”?

我想创建的默认文件是'视图'。

我想保留我的控制行为(事件侦听器)在'控制器'类。有没有办法让Window builder自动将事件侦听器放入您选择的类中,而不是添加到单个文件中?

回答

2

我不知道Eclipse的Window Builder是如何工作的,但我知道NetBean创建的匿名内部类为每个按钮调用自定义方法,然后允许程序员更改自定义方法的主体。如果Eclipse类似,那么你可以简单地使用这个自定义方法来调用你的Control对象的一个​​方法。当然,它增加了一层间接性,但是为了让您完全控制自己的控制权而付出很小的代价。

举例来说,如果我创建了一个JButton名为“myButton的”,然后有代码生成器创建我的按钮的动作,它会创建这样的代码:

myButton.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      myButtonActionPerformed(evt); 
     } 
    }); 

,并允许我访问和写入在生成的方法代码,myButtonActionPerformed:

private void myButtonActionPerformed(java.awt.event.ActionEvent evt) { 
    // TODO add your handling code here: 
} 

而且这里面的方法我会叫我的控制的方法:

private void myButtonActionPerformed(java.awt.event.ActionEvent evt) { 
    if (myControl != null) { 
     myControl.myButtonAction(); 
    } 
} 

控制类可能看起来像

class MyControl { 

    void myButtonAction() { 
     //TODO: implement control code 
    } 

} 

的GUI需要一个setControl(MyControl myControl)方法,以“注入”控制到GUI。

1

另一种拆分代码的方法是使用向导来创建JPanel作为自己的控件,然后使用调色板中的“选择组件”工具(看起来像三个bean)将它们添加到主窗口的布局中。简单,更清洁。虽然我知道它仍然合并了MVC中的“V”和“C”......

相关问题