3

Window Builder と MVC パラダイムを同時に使用したいと考えています。Window Builder がすべてのコードを 1 つのファイルに追加すると、複雑なウィンドウは非常に面倒です。

作成されるデフォルトのファイルを「ビュー」にしたいと思います。

コントロール アクション (イベント リスナー) を「コントローラー」クラスに保持したいと考えています。1 つのモノリシック ファイルにイベント リスナーを追加するのではなく、選択したクラスにイベント リスナーを自動的に配置する方法はありますか?

4

2 に答える 2

2

Eclipse の Window Builder がどのように機能するかはわかりませんが、NetBeans がボタンごとにカスタム メソッドを呼び出す匿名の内部クラスを作成し、プログラマがカスタム メソッドの本体を変更できるようにすることは知っています。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 にコントロールを「注入」するには、GUI に setControl(MyControl myControl) メソッドが必要です。

于 2011-10-07T01:24:12.907 に答える
1

コードを分割するもう 1 つの方法は、ウィザードを使用して JPanels を独自のコントロールとして作成し、パレットから [コンポーネントの選択] ツール (3 つの Bean のように見えます) を使用してメイン ウィンドウのレイアウトに追加することです。簡単でずっときれい。私はそれがまだMVCの「V」と「C」をマージしていることを理解しています...

于 2011-12-20T12:31:11.343 に答える