2013-01-17 4 views
1

MVC 프레임 워크의 View 클래스에 JMenuItem 3 세트가 있습니다. 나는 컨트롤 클래스 EventController에서 그들을 참조하고 싶다. 누군가 이것이 달성했다는 것을 보여줄 수 있습니까? 아래는 이벤트 컨트롤러입니다. 클래스 EventView는 JMenuItem addEvent, editEvent, deleteEvent로 구성됩니다. 컨트롤러 클래스에서 리스너를 어떻게 처리합니까? 누군가 컨트롤러 클래스 위에 샘플 코드를 사용하여 시연 할 수 있습니까?컨트롤러 클래스에 JMenuItem 전달

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; 
} 

두 번째 질문, 난 단지의 View 클래스 자체에서 JTable을 갱신 할 수 있도록

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 때문에 매우 어렵습니다.

답변

3

Action의 모델 내보내기 인스턴스를 필요에 따라 메뉴 및 단추에 추가 할 수 있습니다. 데이터베이스 액세스는 본질적으로 비동기 적이기 때문에 각 작업에서 worker thread을 사용하여 EDT에서 테이블 모드를 업데이트하는 동안 백그라운드에서 데이터베이스를 쿼리합니다. Swing 구성 요소와 모델 간의 관계에 대해서는 A Swing Architecture Overview을 참조하십시오.

부록 : 코드 샘플을 보여줄 수 있습니까?

  • FileMenu 기능성을 캡슐화 Action를 이용하는 가장 기본적인 예이다.

  • 예문 hereJToolBar에서 더 광범위하게 Action을 사용합니다.

  • JHotDraw

    here을 인용 here를 바와 같이, 컨텍스트에 기초하여 가용 Action 인스턴스를 변경하는 매우 복잡한 예이다.

  • example은 Swing에서 일반적인 MVC를 제공합니다.

+0

컨트롤러가 어떻게 모델과 통신을위한 게이트웨이로 들어가는가? 코드 샘플을 보여 주시겠습니까? JMenuItems의 주소를 검색하는 컨트롤러 클래스가 컨트롤러 클래스에서 수행되고 뷰 클래스에서는 수행되지 않도록 해당 컨트롤러에 대한 참조와 관련이 있습니다. – Hoody

+0

위대한 마지막 링크 : D – Hoody