2013-07-01 3 views
0

여러 테이블 (SWT 테이블)에 같은 메뉴를 추가하고 싶습니다. 사용자가 메뉴 항목을 클릭하면 해당 메뉴와 관련된 표를 검색하려고합니다. 아래 코드는 다음과 같습니다.SWT 테이블에 메뉴 추가하기

private void setMenu(Table table) { 
     Listener popUpListener = new Listener() { 

      @Override 
      public void handleEvent(Event event) { 
       MenuItem item = (MenuItem)event.widget; 
       Menu pare = item.getParent(); 
       Decorations fdf = pare.getParent(); 
            //Code to get table name or instance of table. 

      } 
     }; 
     Menu menu = new Menu(table); // where table1 is your table 
     MenuItem item1 = new MenuItem(menu, SWT.PUSH); 
     item1.setText("Copy cell"); 
     item1.addListener(SWT.Selection, popUpListener); 
     MenuItem item2 = new MenuItem(menu, SWT.PUSH); 
     item2.setText("Copy row"); 
     item2.addListener(SWT.Selection, popUpListener); 
     MenuItem item3 = new MenuItem(menu, SWT.PUSH); 
     item3.setText("Copy column"); 
     item3.addListener(SWT.Selection, popUpListener); 
     MenuItem item4 = new MenuItem(menu, SWT.PUSH); 
     item4.setText("Copy all"); 
     item4.addListener(SWT.Selection, popUpListener); 
     table.setMenu(menu); 
    } 

setMenu 메서드는 여러 번 호출되어 테이블 인스턴스를 보냅니다. 팝업 수신기에서 현재 팝업 된 메뉴와 관련된 표를 어떻게 발견 할 수 있습니까?

답변

0

그냥 만들어 Table 당신은 방법 final에 보내

private void setMenu(final Table table) { 
    Listener popUpListener = new Listener() { 

     @Override 
     public void handleEvent(Event event) { 
      MenuItem item = (MenuItem)event.widget; 
      Menu pare = item.getParent(); 
      Decorations fdf = pare.getParent(); 

      // Now you can access the table from within the Listener 
      System.out.println(table); 
     } 
    }; 
    Menu menu = new Menu(table); // where table1 is your table 
    MenuItem item1 = new MenuItem(menu, SWT.PUSH); 
    item1.setText("Copy cell"); 
    item1.addListener(SWT.Selection, popUpListener); 
    MenuItem item2 = new MenuItem(menu, SWT.PUSH); 
    item2.setText("Copy row"); 
    item2.addListener(SWT.Selection, popUpListener); 
    MenuItem item3 = new MenuItem(menu, SWT.PUSH); 
    item3.setText("Copy column"); 
    item3.addListener(SWT.Selection, popUpListener); 
    MenuItem item4 = new MenuItem(menu, SWT.PUSH); 
    item4.setText("Copy all"); 
    item4.addListener(SWT.Selection, popUpListener); 
    table.setMenu(menu); 
}