2012-04-16 2 views
1

В панели, я добавил 3 композитComposite в GWT

public class frame { 

//Initialization 
.... 
.... 
public Service service = new Service(); 

public frame() { 
    initWidget(getFramePanel()); 
} 

private HorizontalPanel getFramePanel() { 
    if (hp== null) { 
     hp= new HorizontalPanel(); 
     hp.setSize("1442px", "750px"); 
     hp.add(getTree());// **are composites** 
     hp.add(getTable()); // **are composite** 

    } 
    return hp; 
} 

То, что я понимаю, что оба эти tree и table добавляются hp в том же классе, так что я могу использовать переменную или объект инициализируется в этом класса, в обоих композитов

например:service объект находится в классе frame, поэтому я хочу знать whethr я могу использовать service как в композите.

в дереве и таблице композитных. Если да, то как?

этот код может быть неправильным, потому что я не копировал код.

ответ

2

Вы можете попробовать использовать шаблон Observer, создать интерфейс, который имеет метод вызова службы, например. «callService» и создать объект «MyInterfaceImpl», который реализует этот интерфейс в классе «frame». Этот объект будет реализовывать интерфейс таким образом, чтобы он получал и использовал как составные значения для дочерних элементов (getTree() и getTable()).

передать этот объект MyInterfaceImpl в обоих композитах либо через конструктор или метод,, то вы всегда можете вызвать этот объект MyInterfaceImpl «метод s либо из композиционных материалов» EventHandler объектов пользовательского интерфейса.

Надеюсь, что это поможет.

1

Вы можете использовать эту услугу в любых обратных вызовах, обработчиках событий и т. Д., Установленных на дереве и таблице. Но я считаю, что вы должны сделать это окончательным.