1

JMenuItemMVCフレームワークのViewクラスに3セットあります。controllクラスでそれらを参照したいと思いEventControllerます。誰かがこれが達成されたことを私に示すことができますか?以下はイベントコントローラーです。クラスEventViewは、JMenuItemaddEvent、editEvent、deleteEventで構成され、Controllerクラスでそれらのリスナーを実行するにはどうすればよいですか。誰かが私のControllerクラスの上にサンプルコードを使用してデモンストレーションできますか?

public class EventController implements ActionLister {
private EventModel model;
private EventView view;
private ActionListener actionListener;


public EventController(EventModel model, EventView view){
    this.model = model;
    this.view = view;
}

2番目の質問、私はクラス自体JTableからしか更新できないので、View

public void updateEventTable() {
    try {
        String sql = "SELECT date as 'Date',eventName as 'Name', time as 'Time' FROM Event";
         pst = conn.prepareStatement(sql); 
         rs = pst.executeQuery();
         tableEvent.setModel(DbUtils.resultSetToTableModel(rs));
         tableEvent.getColumnModel().getColumn(0).setPreferredWidth(80);
         tableEvent.getColumnModel().getColumn(1).setPreferredWidth(170);
         tableEvent.getColumnModel().getColumn(2).setPreferredWidth(110);  
    }
    catch (Exception e ) {
        JOptionPane.showMessageDialog(null, e);
    } finally {
        try {
            rs.close(); pst.close();conn.close();;
        } catch(SQLException e){}
    }
}

これは、ビュークラスにコードを含めることは悪い習慣です。理想的にはモデルに含める必要がありますが、これを行う方法を教えてください。概念は私にとって新しいものであり、学びたいと思っています。JTableとても難しいと思うので

4

1 に答える 1

3

Action必要に応じてメニューやボタンに追加できるモデルのエクスポート インスタンスを作成します。データベース アクセスは本質的に非同期であるため、EDT でテーブル モードを更新しながら、そのような各アクションでワーカー スレッドを使用してバックグラウンドでデータベースにクエリを実行できるようにします。Swing コンポーネントとモデルの関係については、「Swing アーキテクチャの概要」も参照してください。

補遺:コードサンプルを見せてもらえますか?

  • FileMenuAction機能をカプセル化するために使用する非常に基本的な例です。

  • ここで引用されている例ではActionJToolBar.

  • JHotDrawここで引用されている は、ここActionで説明されているように、コンテキストに基づいて使用可能なインスタンスを変更する非常に複雑な例です。

  • このでは、Swing での MVC の一般的な調査を提供します。

于 2013-01-17T04:26:38.373 に答える