【问题标题】:Is it possible to define your own 'controller' in Window Builder for Eclipse?是否可以在 Window Builder for Eclipse 中定义自己的“控制器”?
【发布时间】:2011-12-02 16:30:49
【问题描述】:

我想同时使用 Window Builder 和 MVC 范例。当 Window Builder 将所有代码添加到一个文件中时,复杂的窗口会非常混乱。

我希望创建的默认文件是“视图”。

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

【问题讨论】:

    标签: java eclipse model-view-controller swing windowbuilder


    【解决方案1】:

    我不知道 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 中。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2019-12-19
        • 2014-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-26
        • 2011-05-12
        相关资源
        最近更新 更多