1

これは MVC パラダイムのクラス ビューです。クラスは 2 で構成され、 -とJDialogsをクリックすると開きます。JMenuItemaddEventeditEvent

 public class EventView extends javax.swing.JFrame {



 private javax.swing.JDialog addDialog;
private javax.swing.JDialog editDialog;

private EventModel model;

     /** Constructor */
    public EventView(EventModel model) {
        initComponents();
        this.model = model;
        updateEventTable();       
    }

   public void addEventListener(ActionListener al) {
        addEventButton.addActionListener(al);
    }

  /* public void clearListener(ActionListener cl) {
        clearEventButton.addActionListener(cl);
    }*/

   public void addDialog(ActionListener ae) {
        addEvent.addActionListener(ae);

    }
   public void editDialog(ActionListener ee) {
        editEvent.addActionListener(ee);
    }

} 

コントローラー クラスは、リスナーとのユーザー インタラクションを処理します。

public class EventController implements ActionListener {

//... The Controller needs to interact with both the Model and View.
private EventModel model;
private EventView view;


/** Constructor */
public EventController(EventModel model, EventView v){

    model = new EventModel();
    view = v;
    //... Add listeners to the view.
    view.addEventListener(new addEventListener());
    //view.clearListener(new clearEventListener());
    view.addDialog(new addDialogListener());
    view.editDialog(new editDialogListener());
}

class addEventListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        String name = "";
        String date;
        String start="";
        String end="";
        String venue="";
        String details="";
        String opportunities="";
        String moreOppor="";

        try {
            name = view.getEventName();
            date = view.eventDate().toString();
            start = view.startTime();
            end = view.endTime();
            venue = view.locationWhere();
            details = view.getDetails();
            opportunities = view.getOpportunities();
            moreOppor = view.getMore();
            model.addEvent(name,date,start,venue,details,opportunities,moreOppor,end);    
            view.showSuccess("Event Added!");

        } catch (Exception ex) {
            view.showError(ex);
        }
    }
}


class addDialogListener implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent e) {
       System.out.println("");

    }
}
class editDialogListener implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent e) {
         System.out.println("");
    }
}

このモジュールに関して 2 つの質問があります。

  1. EventController抽象的ではなく、抽象メソッド actionPerformed をオーバーライドしていないというエラーが表示されています。間違っている場合は修正してください。追加の JMenuItem が呼び出されdeleteEventていますが、まだ触れていません。NetbeansIDE での作業 参考までに

  2. ビュークラスSystem.out.println("");のダイアログを表示できるように行を置き換えたいのですが、コンポーネントにアクセスできません。addDialogこれを行う方法?試してみましview.たが、許可されていませんsetVisible(true)

4

3 に答える 3

3
  1. あなたのコンパイラはまったく正しいです: メソッドEventControllerを宣言しません。public void actionPerformed(ActionEvent e)ただし、メソッドを持つ 2 つの内部クラスがありますが、それはカウントされません。

クラスに名前を付けた方法 は、クラスを宣言する代わりにaddEventListenerメソッドを呼び出すことを本当に意図していたことを示唆していますがaddEventListener、コードに基づいて明確な提案を行うことはできません。

于 2013-01-18T11:32:21.913 に答える
0

1) EventController クラスに actionPerformed() メソッドを実装するのを忘れました。

2) ビューを addDialogListener と editDialogListener の引数として設定する必要があります。何かのようなもの :

public class addDialogListener implements ActionListener {

    private EventView view;

    public addDialogListener(EventView view){
       this.view = view;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
       view.doWhatever();
    }
}

その後 :

view.addDialog(new addDialogListener(view));
于 2013-01-18T11:34:07.653 に答える
0
public class EventController {

}

それ以外の

public class EventController implements ActionListener {

}
于 2013-01-18T11:53:43.207 に答える