我想使用Window Builder并同时使用MVC范例。当Window Builder将所有代码添加到一个文件时,复杂的窗口非常混乱。
我希望创建的默认文件是“视图”。
我想将控制动作(事件监听器)保存在'控制器'类中。有没有办法让Window构建器自动将事件侦听器放在您选择的类中,而不是添加到一个单片文件中?
答案 0 :(得分:2)
我不知道Eclipse的Window Builder是如何工作的,但我知道NetBean创建了匿名内部类,它们为每个按钮调用自定义方法,然后允许程序员改变自定义方法的主体。如果Eclipse类似,那么您可以简单地让此自定义方法调用Control对象的方法。当然它增加了一层间接,但要让你完全控制你的控制,这是一个很小的代价。
例如,如果我创建一个名为“myButton”的JButton,然后让代码生成器为我的按钮创建一个动作,它将创建此代码:
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:
}
在这个方法中我会调用我的Control方法:
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 :(得分:1)
分割代码的另一种方法是使用向导创建JPanels作为您自己的控件,然后使用调色板中的“选择组件”工具(看起来像三个bean)在主窗口的布局中添加它们。简单,更清洁。虽然我明白它仍然在MVC中合并“V”和“C”......